使用g ++进行链接无法搜索-lstdc ++ [英] Linking using g++ fails searching for -lstdc++
问题描述
我试图使用别人的Makefile来编译一个非常简单的c ++库。 makefile文件如下:
JNIFLAGS = -O2 -pthread -I / usr / lib / jvm / java-6-sun / include -I / usr / lib / jvm / java-6-sun / include / linux
全部:
rm -f ../dist/libUtils.so
g ++ $(JNIFLAGS)-c -m32 -o com_markets_utils_dates_NativeTime.o com_markets_utils_dates_NativeTime.cpp
g ++ $(JNIFLAGS)-c -m32 -o DateUtil.o DateUtil.cpp
g ++ -pthread -m32 -shared -fPIC -o ../dist/libUtils.so DateUtil.cpp
g ++ -pthread -m32 -shared -fPIC -o ../dist/libNativeTime.so DateUtil.o com_markets_utils_dates_NativeTime.o
这个编译好,但链接器抱怨:
...
/ usr / bin / ld:跳过不兼容/usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.so当搜索-lstdc ++
/ usr / bin / ld:在搜索-lstdc ++
/ usr / bin / ld时跳过不兼容的/usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a:跳过不兼容的/ usr / lib /gcc/x86_64-linux-gnu/4.4.1/libstdc++.so当搜索-lstdc ++
/ usr / bin / ld时:跳过不兼容/usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a搜索-lstdc ++时
/ usr / bin / ld:找不到-lstdc ++
collect2:ld返回1退出状态$ b $ make:*** [all]错误1
仅供参考,我在Ubuntu 9.10 64位上。
,我找到的解决方案是安装g ++ - multilib 。在g ++版本4.6.1上,我遇到了与-lstdc ++相关的不兼容问题。在进一步的探索中:g ++ - multilib是一个虚拟软件包,它安装了g ++ 4.6-multilib然后在/usr/lib/gcc/x86_64-linux-gnu/4.6/32文件夹下安装相应的 libstdc ++。so 。
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-sun/include -I/usr/lib/jvm/java-6-sun/include/linux
all:
rm -f ../dist/libUtils.so
g++ $(JNIFLAGS) -c -m32 -o com_markets_utils_dates_NativeTime.o com_markets_utils_dates_NativeTime.cpp
g++ $(JNIFLAGS) -c -m32 -o DateUtil.o DateUtil.cpp
g++ -pthread -m32 -shared -fPIC -o ../dist/libUtils.so DateUtil.cpp
g++ -pthread -m32 -shared -fPIC -o ../dist/libNativeTime.so DateUtil.o com_markets_utils_dates_NativeTime.o
This compiles fine, but the linker complains:
...
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [all] Error 1
FYI, I am on Ubuntu 9.10 64bit.
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.
这篇关于使用g ++进行链接无法搜索-lstdc ++的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!