【问题标题】:gcc,cygwin: Unable to find depending library when creating librarygcc,cygwin:创建库时找不到依赖库
【发布时间】: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/…

标签: gcc cygwin ld


【解决方案1】:

在这里我找到了解决问题的方法:

building and linking a shared library

我需要一个特定的语法来使它工作,类似于:

-l:libbeat.so.1.0.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-31
    • 2013-06-20
    • 2015-08-21
    • 2019-08-05
    • 2014-08-26
    • 2014-05-28
    • 2012-08-18
    • 1970-01-01
    相关资源
    最近更新 更多