Linking using g++ fails searching for -lstdc++

前端 未结 3 1352
孤街浪徒
孤街浪徒 2020-12-13 10:00

I\'m trying to use someone else\'s Makefile to complile a very simple c++ library. The makefile is as follows:

JNIFLAGS=-O2 -pthread -I/usr/lib/jvm/java-6-su         


        
相关标签:
3条回答
  • 2020-12-13 10:09

    Posting for future reference, a solution I found was to install g++-multilib. I had the same incompatible problem relating to -lstdc++ on g++ version 4.6.1

    On further probing: g++-multilib is a dummy package which installed g++4.6-multilib which in turn installed the appropriate libstdc++.so under the /usr/lib/gcc/x86_64-linux-gnu/4.6/32 folder.

    0 讨论(0)
  • 2020-12-13 10:22

    It seems you're compiling a 32 bit library on a 64 bit machine, however a 32 bit version of libstdc++ is not present.

    Try apt-get install ia32-libs libc6-i386 libc6-dev-i386 lib32gcc1 lib32stdc++6

    (btw. you're producing a .so , you should specify -fPIC when compiling your .cpp files as well)

    0 讨论(0)
  • 2020-12-13 10:34

    Answering my own question:

    Ths solution seems to be a bit of a hack, you need to create a symlink for the 32 bit version of the library (after installing the packages mentioned in @nos's answer):

    $ sudo ln -s /usr/lib32/libstdc++.so.6 /usr/lib32/libstdc++.so
    

    Once you've done this, the linker will automagically find the correct library to use.

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