【问题标题】:In Solaris, link dynamic library error when using /usr/sfw/bin/gcc在 Solaris 中,使用 /usr/sfw/bin/gcc 时链接动态库错误
【发布时间】:2013-02-27 08:59:17
【问题描述】:

全部:
我正在使用 Solaris 10,并遇到以下问题:

There is ODBC dynamic library in /usr/local/lib:

lrwxrwxrwx   1 root     root          16 Jun 26  2012 libodbc.so -> libodbc.so.2.0.0
lrwxrwxrwx   1 root     root          16 Jun 26  2012 libodbc.so.2 -> libodbc.so.2.0.0
-rwxr-xr-x   1 root     root     1874776 Jun 26  2012 libodbc.so.2.0.0  

makefile 是这样的:

gcc  -o a a.c -lodbc

当我使用/usr/local/bin/gcc编译程序时,编译是OK的。
但是当我使用 /usr/sfw/bin/gcc 编译程序时,得到以下错误:

ld:致命:库 -lodbc:未找到

但是crle命令输出:

 Configuration file [version 4]: /var/ld/ld.config  
 Platform:     32-bit MSB SPARC
 Default Library Path (ELF):   /lib:/usr/lib:/usr/local/lib:/opt/DSI/32:/usr/local/asg_mysql/lib
 Trusted Directories (ELF):    /lib/secure:/usr/lib/secure  (system default)

 Command line:
 crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib:/opt/DSI/32:/usr/local/asg_mysql/lib

好像没问题。

那么使用 gcc 有什么不同吗?提前非常感谢!
最好的问候
南萧

【问题讨论】:

    标签: c gcc hyperlink solaris


    【解决方案1】:

    /usr/local/lib 似乎不在链接器的默认搜索路径中。使用-L 选项添加它:

    $ /usr/sfw/bin/gcc your_file.c -o your_program -L/usr/local/lib -lodbc
    

    【讨论】:

    • 但是crle输出:crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib:/opt/DSI/32:/usr/本地/asg_mysql/lib。 /usr/local/lib 在路径中。
    • @NanXiao 是的,但 GCC 似乎仍然使用该路径,或者它应该可以工作,不是吗?
    • 谢谢!根据您的观点, /usr/sfw/bin/gcc 的行为并不完全像 GNU gcc。对吗?
    • @NanXiao 是 GCC 的 Solaris 发行版,所以它是一个“真正的”GCC。它只是使用与 /usr/local 中的标志不同的标志构建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 2017-02-11
    • 2011-05-21
    • 2014-12-22
    • 2013-01-03
    相关资源
    最近更新 更多