解决/usr/bin/ld: final link failed: Bad value

背景:
在arm架构、CentOS8.2操作系统下,编译Mysql8.0.33,报错如下:

[ 42%] Linking CXX executable ../../../../runtime_output_directory/acl_cli
/usr/bin/ld: ../../../../runtime_output_directory/acl_cli: hidden symbol `__aarch64_swp4_rel' in /usr/lib/gcc/aarch64-redhat-linux/8/libgcc.a(swp_4_3.o) is referenced by DSO
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
[ 42%] Linking CXX shared library ../../../../library_output_directory/libmysqlrouter_io_component.so
make[2]: *** [router/src/harness/tests/CMakeFiles/acl_cli.dir/build.make:107: runtime_output_directory/acl_cli] Error 1
make[1]: *** [CMakeFiles/Makefile2:34320: router/src/harness/tests/CMakeFiles/acl_cli.dir/all] Error 2


ld -v
GNU ld version 2.30-73.el8

网上查了一番,说是ld版本低的问题,我升级后,依然没有解决问题,后来把gcc8.5升级到gcc10后,编译通过了。报错没有了。

/usr/bin/ld: cannot find -lThreads::Threads collect2: error: ld returned 1 exit status 这个错误是由于链接器无法找到名为libThreads::Threads的库文件导致的。这个错误通常发生在编译和链接过程中,当链接器尝试将目标文件与所需的库文件进行链接时。 解决这个问题的方法是确保系统中已经安装了所需的库文件,并且库文件的路径正确配置。你可以按照以下步骤来解决这个问题: 1. 确认库文件是否已经安装:使用以下命令检查系统中是否已经安装了libThreads::Threads库文件: ```shell ls /usr/lib/libThreads::Threads.so ``` 2. 如果库文件未安装,你需要安装它。你可以使用包管理器来安装库文件,具体命令取决于你使用的操作系统和包管理器。例如,在Ubuntu上,你可以使用以下命令安装libThreads::Threads库文件: ```shell sudo apt-get install libThreads::Threads-dev ``` 3. 如果库文件已经安装,但链接器仍然无法找到它,可能是因为库文件的路径没有正确配置。你可以尝试将库文件的路径添加到链接器的搜索路径中。具体的方法取决于你使用的编译器和构建系统。以下是一些常见的方法: - 使用编译器选项指定库文件的路径。例如,在gcc中,你可以使用以下命令来指定库文件的路径: ```shell gcc -L/path/to/lib -lThreads::Threads source.c -o executable ``` - 在构建系统的配置文件中添加库文件的路径。例如,在Makefile中,你可以使用以下语法来指定库文件的路径: ```makefile LDFLAGS += -L/path/to/lib LDLIBS += -lThreads::Threads ``` - 将库文件的路径添加到LD_LIBRARY_PATH环境变量中。例如,在bash中,你可以使用以下命令来添加库文件的路径: ```shell export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH ``` 通过以上步骤,你应该能够解决/usr/bin/ld: cannot find -lThreads::Threads collect2: error: ld returned 1 exit status错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值