C: компилировать некоторые объекты (для разделяемой библиотеки) без main () не удается? - PullRequest
7 голосов
/ 27 марта 2011

Из того, что я узнал, мне нужно выполнить этот шаг, чтобы подготовиться к созданию общей библиотеки:

gcc -fPIC libfoo.c -o libfoo.o

И затем я свяжу ее.Я пытался создать make-файл, чтобы помочь в этих шагах, но сейчас, похоже, происходят ошибки.

Это происходит, когда я запускаю файл make:

foo@box:~/Projects/so$ gcc -fPIC ./libfoo.c -o libfoo.o
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status

Как мне скомпилироватьфайл библиотеки без основной функции, так как он не является программой и предназначен для библиотеки?

Если это поможет, моя программа в основном такова (интерпретируется)

(stdio and openssl headers here)

(debugging macro definitions here)

(two functions, gettime() and opensslrandom() defined here)

Мне кажется,у вас есть проблемы с пониманием макросов, так как они будут в общей библиотеке, в конце концов, они бесполезны в общей библиотеке?Я включил их в libfoo.h для включения, хотя мне еще предстоит увидеть, работают ли макросы.

1 Ответ

20 голосов
/ 27 марта 2011

Вам необходимо -c

gcc -fPIC -c libfoo.c 

для создания объектных файлов.

Возможно, вы захотите посмотреть: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

...