Проблема с связью библиотеки GCC - PullRequest
0 голосов
/ 31 марта 2011

Я пытаюсь скомпилировать Pro * C lib в Linux. У меня следующий код в моей сборке.

etc=$TABS_HOME/admin
export etc
if [ -f ${1}.pc ]
then
rm $1_x.o
compc $1
make -f $etc/proc64.mk $1_x.o
ar -cvq  libtabs.a $1_x.o
else
make -f $etc/proc64.mk $1.o
ar -cvq  libtabs.a $1.o
fi

Вот последняя команда, напечатанная при запуске компиляции:

/usr/bin/gcc -g  -m64  -g   -I/export/home/cl10gr2/oracle/rdbms/public -I/home/med/src/common -I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo -

I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public -
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -ltabs.a -lnapi.a  -c commonutil_x.c

Я получаю следующее предупреждение / Ошибка:

gcc: -ltabs.a: linker input file unused because linking not done
gcc: -lnapi.a: linker input file unused because linking not done

Может ли кто-нибудь помочь, пожалуйстамне, почему он не связывает файлы lib?

1 Ответ

3 голосов
/ 31 марта 2011

Это не связывает их, потому что вы не связываете. Вы передаете опцию -c:

-c Компилировать или собирать исходные файлы, но не создавать ссылки. Этап связывания просто не завершен. Окончательный вывод в форме объектного файла для каждого исходного файла.

Если вы создаете промежуточные объектные файлы, вам не нужны библиотеки до самого конца. Включите все объектные файлы и библиотеки, которые вам нужны на заключительном этапе, и свяжите их все вместе.

...