나는 다음과 같은 주요 기능과 'NC'및 가져 오기 기능으로 'OC'를 가지고 : 다음 scons 'Program'명령에서 'LIBS'을 사용하면 정적 라이브러리를 찾지 못했습니다. 그 이유는 무엇입니까?
$ cat n.c o.c
int f();
int main(){
f();
return 0;
}
#include<stdio.h>
int f(){
printf("hello\n");
return 2;
}
는 다음과 같은 파일 SCons는 :
Library('o.c')
Program('n.c',LIBS=['o'])
은 내가 여기에 희망하는 것은 oc를 컴파일하고 libo.a (OK)를 생성하려면 nc는이 '.a'를 사용하여 최종 실행 파일을 생성합니다. 그래서 LIBS = [ 'o']를 지정하여 libo.a 라이브러리를 찾을 아카이브 파일을 지정합니다. 그러나 :
$ scons -Q
gcc -o n n.o -lo
/usr/bin/ld: cannot find -lo
collect2: error: ld returned 1 exit status
scons: *** [n] Error 1
사실, SCons는 동적 공유 라이브러리를 찾을 수 있습니다 '-lo'로 내 명령을 해석했다. 링크하는 동안 오브젝트 파일과 같이 아카이브가 사용되기 때문에 원하는 내용이 아닙니다. '-l'은 아카이브 파일과 함께 작동하며, 왜 scons가 LIBS가 동적 링크 공유 라이브러리를 사용하도록 해석합니까?
감사합니다.
또한 곳이 경우, 라이브러리를 검색하는 경로를 지정해야합니다