修改g++库路径
Modify g++ library path
我最近安装了gcc 4.9.2,在链接到libs时发现了一个问题。
搜索路径的输出:
install: /usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/
programs: =/usr/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/libexec/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/bin/
libraries: =/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../lib64/:/lib/x86_64-unknown-linux-gnu/4.9.2/:/lib/x86_64-linux-gnu/:/lib/../lib64/:/usr/lib/x86_64-unknown-linux-gnu/4.9.2/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../../x86_64-unknown-linux-gnu/lib/:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/../../../:/lib/:/usr/lib/
真的,有问题的是:
/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib64/
我需要更改这两个库的顺序(以便lib64具有更高的搜索优先级),因为这两个目录都有libstdc++.so.6,并且我需要使用lib64文件夹中的一个。
我该怎么做?
请不要:
1,建议我更改LD_LIBRARY_PATH以显式包含libstdc++.so.6,因为我确信x86_64-linux-gnu文件夹中还有其他东西是lib64文件夹中的旧版本-我从旧版本升级了g++。
2,建议我在g++-L选项中明确包含lib64/libstdc++.so.6。
非常感谢。
/************************编辑以获取更多信息************************/
根据下面的请求,这里有一些关于配置和安装的更多细节(我从gcc.gnu.org下载了4.9.2源代码,提取了它,并在4.9.2顶级文件夹中启动):
mkdir ../gcc-build &&
cd ../gcc-build &&
../gcc-4.9.2/configure
--prefix=/usr
--libdir=/usr/lib
--enable-shared
--enable-threads=posix
--enable-__cxa_atexit
--disable-multilib
--with-system-zlib
--enable-languages=c,c++ &&
make
您可以有一个新的(或修改现有的)GCC specs
文件,文档就在这里。
AFAIK,specs
文件在您的";安装";dir,因此您将在/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.2/specs
中(如果它不存在,您可以创建它)。
AFAIK有一些内置默认值,但您可以将系统配置为具有显式默认值。
另请阅读GCC的调试选项。您可能想要使用-dumpspecs
来获得内置的默认规范
详细信息可能高度特定于您的系统,尤其是当您从GCC的源代码编译GCC时。
我对specs
文件不够熟悉,无法为您的特定问题提供可靠的解决方案。您可以在gcc-help@gcc.gnu.org
上查询详细信息
注意:我倾向于认为用--prefix=/usr
配置gcc
(而不是像默认--prefix=/usr/local/
或某些--prefix=/opt/
等那样的非系统前缀)是一个错误(或者至少也使用--program-suffix=-4.9
)。您可能会将您的gcc
与系统gcc
混淆;如果您想替换您的系统gcc
(这可能很危险),您应该使用与系统gcc
相同的参数配置新的gcc
。请注意,/usr/bin/gcc -v
告诉您的系统gcc
是如何配置的(在覆盖之前完成)。
在一些较旧的系统上编译最新的GCC 4.9时,我通常建议用--prefix=/usr/local/
和--program-suffix=-4.9
配置它,然后将/usr/local/bin/
添加到$PATH
中,并使用make CC=gcc-4.9 CXX=g++-4.9
来构建程序。
- 如何将更多文件夹添加到c++include路径
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- C++A*算法并不总是在路径中具有目标节点
- 从函数角度看ID到文件路径的内部与外部映射
- boost xml parsingl将xml的路径作为变量发送
- 对于MacOS上的G++,如何添加默认的include目录/usr/local/include和默认的库搜索路径/usr
- 如何使用cppcheck处理半相对包含路径
- 在C++中设置基于操作系统的文件路径
- 基于编译器选项的编译二进制路径
- 按边长度递归搜索图中所有可行路径
- 使用变量值作为 PlaySound 中的路径
- 如何转换真实路径 CString c++
- 从 GUID 获取 USB 卷路径
- 查找 GCD:并非所有控制路径都返回值
- C++17 文件系统::remove_all 带有通配符路径
- 在带有尾部斜杠的路径上返回 std::filesystem::create_directories() 的值
- 获取当前正在运行的 exe 名称(不是路径)
- 如何从 Skia 路径几何体中获取网格?
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- VS Code C++:不准确的系统包括路径错误(wchar.h,boost/lambda/lambda.hpp)