Я получил «н.д.» в качестве основной функции, а «ос» как функции импорта, как показано ниже:Использование команды «LIBS» в программе «scons» не удалось найти статическую библиотеку, почему?
$ 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'], в hoep, чтобы указать файл архива, чтобы найти библиотеку 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 для использования разделяемых библиотек динамических ссылок?
Спасибо.