/opt/stm32_sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/ld: /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so: error adding symbols: file in wrong format collect2: error: ld returned 1 exit status Makefile:195: recipe for target 'analogclock' failed make: *** [analogclock] Error 1
时间: 2023-07-23 20:55:55 浏览: 119
这个错误是由于链接器尝试将不同架构的库文件链接在一起导致的。/home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so 库文件可能是在不同的系统上编译的,或者与你的系统的架构不兼容。
解决方案是在编译时使用与目标系统相同的Qt库文件,或者重新编译Qt库文件以匹配目标系统的架构。
你可以尝试重新编译Qt库文件,或者从适用于你的目标系统的官方源中获取Qt库文件。另外,你也可以检查你的编译选项和环境变量是否正确设置。
相关问题
/opt/stm32_sdk/sysroots/x86_64-ostl_sdk-linux/usr/bin/ld: /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so: error adding symbols: file in wrong format collect2: error: ld returned 1 exit status Makefile:210: recipe for target 'analogclock' failed make: *** [analogclock] Error 1
这个错误提示类似于之前的错误提示,也是由于链接器在链接可执行文件时,发现了一个或多个文件格式不正确。具体来说,错误信息中指向了`/home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so`这个库文件,说明这个库文件格式不正确,可能是由于编译或安装过程中出现了问题。
为了解决这个问题,您可以尝试以下几个步骤:
1. 确保您的Qt库文件是针对当前系统和编译器的正确版本。如果您使用了交叉编译工具链,需要确保Qt库文件也是交叉编译的版本。
2. 检查您的Qt库文件是否正确安装,并且路径设置正确。可以通过在终端中输入`echo $LD_LIBRARY_PATH`命令,查看动态链接库搜索路径是否包含Qt库文件的路径。
3. 如果以上步骤没有解决问题,可以尝试重新编译和安装Qt库文件。可以在重新编译之前,先将已有的Qt库文件删除,确保重新编译的库文件是全新的。
希望这些步骤可以帮助您解决问题。
/opt/gateway/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc交叉编译valgrind
要使用`/opt/gateway/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc`交叉编译Valgrind,您可以按照以下步骤进行操作:
1. 下载Valgrind源代码:
您可以从Valgrind官方网站(http://valgrind.org/downloads/)或其代码托管平台(如GitHub)下载最新的Valgrind源代码。
2. 设置交叉编译环境:
在您的开发机上,您需要设置适当的交叉编译环境。这包括安装x86_64-sdrvsdk-linux交叉编译工具链和相关的库文件。
3. 配置Valgrind:
进入Valgrind源代码目录,运行以下命令进行配置:
```
CC=/opt/gateway/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc ./configure --host=aarch64-sdrv-linux
```
4. 编译Valgrind:
运行以下命令进行编译:
```
make
```
5. 安装Valgrind:
编译完成后,将生成的Valgrind可执行文件复制到目标系统上。您可以将其复制到aarch64-sdrv-linux系统上的任何目录,以便在该系统上使用Valgrind。
请注意,在配置和编译过程中可能会遇到一些依赖项缺失或其他问题。根据您的具体环境,您可能需要安装一些额外的库或解决其他依赖关系,以便成功编译Valgrind。
希望这些步骤能帮助您使用`/opt/gateway/2.5.3/sysroots/x86_64-sdrvsdk-linux/usr/bin/aarch64-sdrv-linux/aarch64-sdrv-linux-gcc`交叉编译Valgrind。如果您有任何问题,请随时向我提问。
阅读全文