2013-09-12 4 views
2

Я пытаюсь сделать следующее Makefile на olaris SPARCКак связать общую библиотеку в Makefile

CC=/usr/sfw/bin/gcc 

INCPATH=/export/home/compkvar/compile/inc 
LIBPATH=/export/home/compkvar/compile/lib 
SOURCEPATH=/export/home/compkvar/compile/src 

.c.o: 
     $(CC) -c $< $(INCPATH) -I. 


PSOURCE = driver.c 

driver : driver.o 
       $(CC) -I$(INCPATH) -L$(LIBPATH) -o driver driver.c -lprivate 

all : driver 

clean : 
    rm driver.o driver 

, но я получил ошибку следующее;

/usr/sfw/bin/gcc -I/export/home/compkvar/compile/inc -L/export/home/compkvar/compile/lib -o driver driver.c -lprivate 
Undefined      first referenced 
symbol        in file 
isinf        /export/home/compkvar/compile/lib/libprivate.so 
ld: fatal: Symbol referencing errors. No output written to driver 
collect2: ld returned 1 exit status 
*** Error code 1 
make: Fatal error: Command failed for target `driver' 

libprivate.so разделяемой библиотеки существуют под '/ экспорт/дома/compkvar/компиляции/Lib' путь, но это не удалось найти:

bash-3.00$ pwd 
/export/home/compkvar/compile/lib 
bash-3.00$ ls -latr 
total 14116 
drwxr-xr-x 2 compkvar other  512 Sep 12 15:34 . 
drwxr-xr-x 5 compkvar other  512 Sep 12 15:34 .. 
-rwxrwxrwx 1 compkvar other  761180 Sep 12 15:43 libprivate.so 
-rwxrwxrwx 1 compkvar other 2275492 Sep 12 15:43 libPricingFunctions.so 
-rwxrwxrwx 1 compkvar other 1104576 Sep 12 15:43 libprfUtilities.a 
-rwxrwxrwx 1 compkvar other 2275492 Sep 12 15:43 libPricingFunctions.so.1 
-rwxrwxrwx 1 compkvar other  761180 Sep 12 15:43 libprivate.so.1 
bash-3.00$ 

Спасибо заранее.

+0

Вы читаете сообщение об ошибке неправильно - это не говорит, что он не может найти 'libprivate.so', но что-то в этой библиотеке ссылается другой символ (' isinf'), что не может найти в любой из библиотек, связанных. Как указывает user1969104, вам, вероятно, нужно связать в математической библиотеке. – twalberg

+0

Что происходит, когда вы пытаетесь построить 'драйвер' из командной строки, не используя Make? Это не похоже на проблему «Сделать проблему». – Beta

+0

Я попытался построить драйвер из командной строки, не используя make, но он тоже не удался. – mfu

ответ

2

isinf является частью математической библиотеки. Попробуйте включить -lm.

$(CC) -I$(INCPATH) -L$(LIBPATH) -o driver driver.c -lprivate -lm 
+0

Спасибо за ваш ответ. Мы попытались скомпилировать его с флагом -lm, но он снова не смог найти «isinf». /usr/sfw/bin/gcc -I/export/home/compkvar/compile/inc -L/export/home/compkvar/compile/lib -o драйвер driver.c -lprivate -lm Неопределенный первый ссылочный символ в файле isinf /export/home/compkvar/compile/lib/libprivate.so ld: fatal: Символьные ссылки на ошибки. Нет вывода, записанного в драйвер collect2: ld возвращен 1 статус выхода *** Код ошибки 1 make: Неустранимая ошибка: команда не удалась для целевого 'driver ' – mfu

Смежные вопросы