usr/bin/ld: cannot find -l

前端 未结 14 2720
离开以前
离开以前 2020-11-22 07:07

I\'m trying to compile my program and it returns this error :

usr/bin/ld: cannot find -l

in my makefile I use the c

相关标签:
14条回答
  • 2020-11-22 08:08

    First, you need to know the naming rule of lxxx:

    /usr/bin/ld: cannot find -lc
    /usr/bin/ld: cannot find -lltdl
    /usr/bin/ld: cannot find -lXtst
    

    lc means libc.so, lltdl means libltdl.so, lXtst means libXts.so.

    So, it is lib + lib-name + .so


    Once we know the name, we can use locate to find the path of this lxxx.so file.

    $ locate libiconv.so
    /home/user/anaconda3/lib/libiconv.so   # <-- right here
    /home/user/anaconda3/lib/libiconv.so.2
    /home/user/anaconda3/lib/libiconv.so.2.5.1
    /home/user/anaconda3/lib/preloadable_libiconv.so
    /home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
    /home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
    /home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1
    /home/user/anaconda3/pkgs/libiconv-1.14-0/lib/preloadable_libiconv.so
    

    If you cannot find it, you need to install it by yum (I use CentOS). Usually you have this file, but it does not link to right place.


    Link it to the right place, usually it is /lib64 or /usr/lib64

    $ sudo ln -s /home/user/anaconda3/lib/libiconv.so /usr/lib64/

    Done!

    ref: https://i-pogo.blogspot.jp/2010/01/usrbinld-cannot-find-lxxx.html

    0 讨论(0)
  • 2020-11-22 08:11

    The library I was trying to link to turned out to have a non-standard name (i.e. wasn't prefixed with 'lib'), so they recommended using a command like this to compile it -

    gcc test.c -Iinclude lib/cspice.a -lm

    0 讨论(0)
提交回复
热议问题