【发布时间】:2014-10-29 04:18:06
【问题描述】:
为什么 ld 在下面找不到库 libjarray.so?
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
【问题讨论】:
-
"-ljarray" 选项使 ld 使用归档文件 "libjarray.ar" 进行链接。 “为什么 ld 在下面找不到库 libjarray.so?”因为 ld 不会找到“libjarray.so”而是“libjarray.ar”。
-
所以你的意思是这是错误的:cprogramming.com/tutorial/shared-libraries-linux-gcc.html? " 告诉 GCC 在哪里可以找到共享库 呃-哦!链接器不知道在哪里可以找到 libfoo。GCC 有一个默认位置列表,但我们的目录不在该列表中。2 我们需要告诉 GCC在哪里可以找到 libfoo.so。我们将使用 -L 选项来做到这一点。在此示例中,我们将使用当前目录 /home/username/foo: $ gcc -L/home/username/foo -Wall -o test main.c -lfoo "
-
而且,如果你认为这是错误的 - 你应该怎么写?
-
这个帖子也提示你错了,富木stackoverflow.com/questions/16710047/…