2014-10-29 2 views
0

Почему я не могу найти библиотеку libjarray.so ниже?gcc, cygwin: невозможно найти библиотеку при создании библиотеки

gcc -shared -Wl,-soname,libjstring.so.0.1 -I/home/jocke/development/jstring/../jarray/output -I/home/jocke/development/jstring -L/home/jocke/development/jstring/../jarray/output -ljarray jstring.o -o libjstring.so.0.1

/usr/lib/gcc/x86_64-pc-cygwin/4.8.3/../../../../x86_64-pc-cygwin/bin/ld: cannot find -ljarray collect2: error: ld returned 1 exit status

$ ls -l /home/jocke/development/jstring/../jarray/output total 79<br> lrwxrwxrwx 1 jocke Domain Users 41 Oct 29 11:58 jarray.c -> /home/jocke/development/jarray/jarray.c -rw-r--r-- 1 jocke Domain Users 9840 Oct 29 11:25 jarray.o lrwxrwxrwx 1 jocke Domain Users 52 Oct 29 11:58 jarray_test.c -> /home/jocke/development/jarray/utest/jarray_test.c lrwxrwxrwx 1 jocke Domain Users 16 Oct 29 11:58 libjarray.so -> libjarray.so.0.1 -rwxr-xr-x 1 jocke Domain Users 62905 Oct 29 11:58 libjarray.so.0.1

+0

Параметр «-ljarray» позволяет ld использовать файл архива «libjarray.ar» для связывания. «Почему я не могу найти библиотеку libjarray.so ниже?» Потому что ld не найдет «libjarray.so», но «libjarray.ar». –

+0

Итак, вы имеете в виду, что это неправильно: http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html? «» Сообщить GCC о том, где найти общую библиотеку Uh-oh! Компонент не знает, где найти libfoo. GCC имеет список мест, которые он по умолчанию по умолчанию, но наш каталог отсутствует в этом списке.2 Нам нужно указать GCC, где найти libfoo.so. Мы будем делать это с помощью опции -L. В этом примере мы будем использовать текущий каталог,/home/username/foo: $ gcc -L/home/username/foo -Wall -o test main.c -lfoo « – Joachim

+0

И, если вы считаете, что это неправильно - как вы должны его писать? – Joachim

ответ

0

Здесь я нашел решение моей проблемы:

building and linking a shared library

мне нужен определенный синтаксис, чтобы сделать его работу, аналогичную:

-l: libbeat.so.1.0.1

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