简体   繁体   中英

Linking a special shared library

I need to link a shared library (LuaSocket) I'm compiling against another special shared library, liblua5.1 , that isn't in one of the normal locations. To do this I'm modifying the Makefile.

I cannot figure out what I'm doing wrong, but this particular step that I modified fails:

LIBRARY_PATH=/media/sda2/crank/lib gcc -O -shared -fpic -l liblua5.1 -o socket.so.2.0.2 [...]

(where [...] is a list of .o files that just got built). When I build, I get the error

/usr/lib/gcc/arm-poky-linux-gnueabi/4.8.1/../../../../arm-poky-linux-gnueabi/bin/ld: cannot find -lliblua5.1
collect2: error: ld returned 1 exit status
make: *** [socket.so.2.0.2] Error 1

Inspection of the LIBRARY_PATH confirms that the needed library is there:

# ls /media/sda2/crank/lib/
lgre.so  libgre.so  libgreio.a  liblua.so  liblua5.1.so  libsbexternal.so

What am I doing wrong?

Change -l liblua5.1 to -llua5.1 .

Also, instead of setting LIBRARY_PATH , why not use the -L option? Example: -L/media/sda2/crank/lib .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM