2010-05-12 3 views
0

К сожалению, да.О нет, не другой Неопределенный справочный вопрос!

У меня есть своя общая библиотека, компоновщик не жалуется на то, что не нашел его, но все же получаю неопределенную ошибку ссылки. Думая, что я мог бы сделать что-то неправильно, я сделал небольшое исследование и нашел эту хорошую, простую прохождение игры:

http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

который я следовал к письму, но до сих пор я получаю:

$ gcc -Wall main.c -o dynamically_linked -L.\ -lmean 
/tmp/ccZjkkkl.o: In function `main': 
main.c:(.text+0x42): undefined reference to `mean' 
collect2: ld returned 1 exit status 

Это довольно простой материал, так что случилось? Есть ли что-то в моей настройке, которая может потребовать проверки/tweeking?

GCC 4.3.2 Fedora 10 64-разрядное

+3

'\' не является разделителем путей. '/' является. – Stephen

ответ

3

Изменение:

$ gcc -Wall main.c -o dynamically_linked -L.\ -lmean 

к:

$ gcc -Wall main.c -o dynamically_linked -L. -lmean 



Вы, вероятно, имел в виду т о это сделать:

$ gcc -Wall main.c -o dynamically_linked -L./ -lmean 

, который в порядке, но задняя / избыточна

+0

Согласовано но ... $ НКУ -Wall main.c -o dynamically_linked -L./ -lmean /USR/бен/л.д.: не может найти -lmean collect2: л.д. вернувшийся статус 1 выхода из и ... $ gcc -Wall main.c -o dynamically_linked -L. -lmean /USR/бен/л.д.: не может найти -lmean collect2: л.д. возвращается 1 выход статус Так что теперь л.д. не может найти библиотеку, тогда как с $ НКА -Wall main.c -o dynamically_linked - Л. \ -lmean /tmp/cceWR2jQ.o: ​​в функции 'главной ':. main.c :(текст + 0x42): не определено ссылка на' средней' collect2: LD возвращается 1 выход статус Кажется, говоря «библиотека найдена», но отказываются ссылаться :( Weird. – roony

+0

@roony: no - the \ character, который вы использовали первоначально, ускользает от следующего символа (пробел в этом случае), так что вы на самом деле просто проходили '". -lmean "' как путь к '-L'. Теперь вы передаете lib rary с исправленной командной строкой, но он не найден. Его следует называть 'libmean.so' или аналогичным. –

+0

Yup! Библиотека libmean.so еще [[$ gcc -Wall main.c -o dynamically_linked -L -lmean]] по-прежнему дает неопределенный ref для 'mean 'в main arghh! – roony

0

Как была создана библиотека? Libtool?

Покажите нам ls -l вашего текущего каталога и посмотрите, что говорит gcc -v <rest of your command> (что дает подробную информацию о том, что делает gcc).

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