使用g ++进行链接无法搜索-lstdc ++ [英] Linking using g++ fails searching for -lstdc++

查看:165
本文介绍了使用g ++进行链接无法搜索-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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆