编译Linux工程,公司编译环境是CentOS5,可以正常编译。但移到CentOS7就不行了,总是提示:
/usr/bin/ld: 找 不 到 -lstdc++
collect2: 错 误 : ld 返 回 1。
怀疑是搜索库路径不对,使用命令:ld -verbose 查看链接库搜索路径。发现路径中确实没有libstdc++.so.
[root@CentOs7 ~]# ld -verbose
GNU ld version 2.27-44.base.el7_9.1
支持的仿真:
elf_x86_64
elf32_x86_64
elf_i386
elf_iamcu
i386linux
elf_l1om
elf_k1om
使用内部链接脚本:
==================================================
/* Script for -z combreloc: combine and sort reloc sections */
/* Copyright (C) 2014-2016 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. */
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
"elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("=/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib");
使用命令:find / -name libstdc++.* | grep libstdc++, 查看有没有其他相关litstdc++.so
[root@CentOs7 bd]# find / -name libstdc++.* | grep libstdc++
/var/lib/docker/overlay2/685d194cac64d5c34f19fe7d43879f8a4ca596e509e48ba9fe00d05a2652149f/diff/usr/lib64/libstdc++.so.6
/var/lib/docker/overlay2/685d194cac64d5c34f19fe7d43879f8a4ca596e509e48ba9fe00d05a2652149f/diff/usr/lib64/libstdc++.so.6.0.8
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/lib/gcc/x86_64-redhat-linux/4.1.1/libstdc++.a
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.a
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.la
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.so
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.so.6
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.so.6.0.20
/var/lib/docker/overlay2/aa9322b14570f0e5d78deaf7fc2e127b0ab8bfa02c215c0c2dd718effa79fbef/diff/usr/local/lib64/libstdc++.so.6.0.20-gdb.py
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.a
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/gcc/i386-redhat-linux/4.1.1/libstdc++.so
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/gcc/x86_64-redhat-linux/4.1.1/32/libstdc++.a
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/gcc/x86_64-redhat-linux/4.1.1/32/libstdc++.so
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/gcc/x86_64-redhat-linux/4.1.1/libstdc++.so
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/libstdc++.so.6
/var/lib/docker/overlay2/d5e0551b37f86c42289d01bed808672414da46b26534aba5780a1097ad6f903f/diff/usr/lib/libstdc++.so.6.0.8
/var/lib/docker/overlay2/a0fdb9be44b142cf924da66827066aa613f3edbbbf067152d7e4d74322554318/diff/usr/lib64/libstdc++.so.6
/var/lib/docker/overlay2/a0fdb9be44b142cf924da66827066aa613f3edbbbf067152d7e4d74322554318/diff/usr/lib64/libstdc++.so.6.0.20
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.a
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/lib64/libstdc++.so
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/libstdc++.a
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/32/libstdc++.a
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/32/libstdc++.so
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/libstdc++.so
看到还是有很多libstdc++.so。于是在搜索库目录中创建软链接:ln -s <link_path> <source_path>
[root@CentOs7 bd]# ln -s /usr/lib64/libstdc++.so /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
创建完之后发现还是不行,提示找不到。
又看资料说,可能是库版本不对,于是删除该链接,重新创建其他版本的so链接,结果都不行。
那可能就真的没装对应版本的libstdc++.so吧。输入命令:yum install glibc-static libstdc++-static -y,重新安装:
[root@CentOs7 bd]# yum install glibc-static libstdc++-static -y
已加载插件:fastestmirror
Determining fastest mirrors
* base: mirrors.huaweicloud.com
* centos-sclo-rh: mirrors.bfsu.edu.cn
* centos-sclo-sclo: mirrors.bfsu.edu.cn
* extras: mirrors.bfsu.edu.cn
* updates: mirrors.bfsu.edu.cn
base | 3.6 kB 00:00:00
centos-sclo-rh | 3.0 kB 00:00:00
centos-sclo-sclo | 3.0 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/3): docker-ce-stable/7/x86_64/primary_db | 91 kB 00:00:00
(2/3): centos-sclo-rh/x86_64/primary_db | 3.4 MB 00:00:04
(3/3): updates/7/x86_64/primary_db | 19 MB 00:00:09
正在解决依赖关系
--> 正在检查事务
---> 软件包 glibc-static.x86_64.0.2.17-326.el7_9 将被 安装
---> 软件包 libstdc++-static.x86_64.0.4.8.5-44.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
============================================================================================================================================================================================================================================= Package 架构 版本 源 大小
=============================================================================================================================================================================================================================================正在安装:
glibc-static x86_64 2.17-326.el7_9 updates 1.6 M
libstdc++-static x86_64 4.8.5-44.el7 base 413 k
事务概要
=============================================================================================================================================================================================================================================安装 2 软件包
总下载量:2.0 M
安装大小:11 M
Downloading packages:
(1/2): glibc-static-2.17-326.el7_9.x86_64.rpm | 1.6 MB 00:00:00
(2/2): libstdc++-static-4.8.5-44.el7.x86_64.rpm | 413 kB 00:00:00
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------总计 2.2 MB/s | 2.0 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : libstdc++-static-4.8.5-44.el7.x86_64 1/2
正在安装 : glibc-static-2.17-326.el7_9.x86_64 2/2
验证中 : glibc-static-2.17-326.el7_9.x86_64 1/2
验证中 : libstdc++-static-4.8.5-44.el7.x86_64 2/2
已安装:
glibc-static.x86_64 0:2.17-326.el7_9 libstdc++-static.x86_64 0:4.8.5-44.el7
完毕!
安装完后,再编译,一切正常。
建议:如果提示找不到,先重装,确保已经安装了,再说其他的。
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我已经看到了一些其他的问题,尝试了他们的建议,但没有一个对我有用。我已经使用Rails大约一年了,刚刚开始一个新的Rails项目,突然遇到了问题。我卸载并尝试重新安装所有Ruby和Rails。Ruby很好,但Rails不行。当我输入railss时,我得到了can'tfindgemrailties。我当前的Ruby版本是ruby2.2.2p95(2015-04-13修订版50295)[x86_64-darwin15],尽管我一直在尝试通过rbenv设置ruby2.3.0。如果我尝试rails-v查看我正在运行的版本,我会得到同样的错误。我使用的是MacOSXElCapitan版本10
我花了几天时间尝试安装ruby1.9.2并让它与gems一起工作:-/我最终放弃了我的MacOSX10.6机器,下面是我的Ubuntu机器上的当前状态。任何建议将不胜感激!#rubytest.rb:29:in`require':nosuchfiletoload--mongo(LoadError)from:29:in`require'fromtest.rb:1:in`'#cattest.rbrequire'mongo'db=Mongo::Connection.new.db("mydb")#gemwhichmongo/usr/local/rvm/gems/ruby-1.9.2-p0/g
我正在尝试以一种更类似于普通RubyGem结构的方式构建我的Sinatra应用程序。我有以下文件树:.├──app.rb├──config.ru├──Gemfile├──Gemfile.lock├──helpers│ ├──dbconfig.rb│ ├──functions.rb│ └──init.rb├──hidden│ └──Rakefile├──lib│ ├──admin.rb│ ├──api.rb│ ├──indexer.rb│ ├──init.rb│ └──magnet.rb├──models│ ├──init.rb│ ├──invite.rb│ ├─
我正在尝试在SUSEEnterprise11SP3上安装compass。我得到以下信息。有什么想法吗?geminstallcompassBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingcompass:ERROR:Failedtobuildgemnativeextension./usr/bin/rubyextconf.rbmkmf.rbcan'tfindheaderfilesforrubyat/usr/lib64/ruby/ruby.hextconffailed,exitcode1Gemfileswi
我的heroku应用崩溃了,因为它找不到模块“SecureRandom”。我在gemfile中指定了我的Ruby版本,我的计算机、gemfile和Heroku似乎都匹配Ruby版本号,尽管不是补丁号。其他帖子建议将usr/bin/heroku指向特定的Ruby文件,但我不确定该怎么做(我的应用程序中没有Herokubin)。这看起来像是Ruby版本错误。我该如何解决这个问题?classOrderItemHeroku日志:/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/dependenci
我目前正在做一个需要在ubuntu11.04上使用rackup命令的项目,但我收到一个错误:-bash:rackup:commandnotfound。我已经安装了rails和rackrubygems。任何帮助都会很棒! 最佳答案 如果你正在使用bundler那么也许你需要使用bundleexecbundleexecrackup 关于ruby-rackup:找不到命令,我们在StackOverflow上找到一个类似的问题: https://stackover
我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位
执行rvmlist后,我得到以下输出:rvmrubiesgems[missingbin/ruby]=*ruby-2.0.0-p645[x86_64]ruby-2.1.6[x86_64]ruby-2.2.1[x86_64]gems[missingbin/ruby]是什么意思?gems是某种系统gemset吗?它不是我创建的,我不知道我是否可以或应该删除它。 最佳答案 在我跑完之后:rvmfix-permissions然后我能够卸载具有[缺少bin/ruby]的版本。 关于ruby-如何修复
您好,我正在做Rails应用程序,当我捆绑安装时它返回一个错误:无法在任何来源中找到coffee-script-source-1.1.3我知道coffee-script-source-1.1.3gem已被弃用/取消,但我的其他gem与此有依赖关系。但是这个项目正在与其他机器和heroku产品一起工作。如何在不更改我的gemfile的情况下成功捆绑安装?谢谢 最佳答案 运行这个:bundleupdate--sourcecoffee-script-source如果出现错误,如下所示:Anerroroccurredwhileinstall