g++ -c src/main.cpp -I src -O0 -g -fPIC -Werror -o main.o make: g++: No such file or directory
时间: 2024-05-07 15:21:52 浏览: 108
这个错误提示表明你的系统中没有安装 g++ 编译器。你可以尝试在命令行中输入以下命令来安装 g++:
- 在Ubuntu系统中执行以下命令:
```
sudo apt-get update
sudo apt-get install g++
```
- 在CentOS系统中执行以下命令:
```
sudo yum install gcc-c++
```
安装完成后,再次执行编译命令即可。
相关问题
出现以下结果的原因gcc -Wall -Wextra -g -fPIC -c -o src/calculator.o src/calculator.c gcc -Wall -Wextra -g -fPIC -c -o src/greeter.o src/greeter.c make: *** 没有规则可制作目标“gcc”,由“libuser.so” 需求。 停止。
这个错误提示意味着 Makefile 文件中没有定义编译器的规则。在 Makefile 中需要定义编译器的规则,例如:
```
CC=gcc
CFLAGS=-Wall -Wextra -g -fPIC
libuser.so: src/calculator.o src/greeter.o
$(CC) $(CFLAGS) -shared -o libuser.so src/calculator.o src/greeter.o
src/calculator.o: src/calculator.c
$(CC) $(CFLAGS) -c -o src/calculator.o src/calculator.c
src/greeter.o: src/greeter.c
$(CC) $(CFLAGS) -c -o src/greeter.o src/greeter.c
```
这个 Makefile 文件定义了编译器为 gcc,并且定义了编译选项为 -Wall -Wextra -g -fPIC。规定了目标文件 libuser.so 的依赖文件为 src/calculator.o 和 src/greeter.o,以及编译这些文件的规则。
make for plat=atlas310 cross=aarch64-ascend310-linux-gnu- LDFLAGS=-Wl,--gc-sections -static -L/home/257916/server/test/v1.1/Trunk/build/../src/thirdpart/libs/atlas310 -L/home/257916/server/test/v1.1/Trunk/build/../lib/atlas310 -ldw -lbs -lpthread -lm EXTRA_CFLAGS=-DSVN_VERSION="\"64670"\" -I /net -DOSA_MODULE_NAME=Spectrum-Convert@64670 -DBUILD_DATE="\"Mon, 24 Jul 2023 19:48:54 +0800"\" CFLAGS=-D_GNU_SOURCE -I/home/257916/server/test/v1.1/Trunk/build/../include -I/home/257916/server/test/v1.1/Trunk/build/../src/base/include -I/home/257916/server/test/v1.1/Trunk/build/../src/base/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/decode/include -I/home/257916/server/test/v1.1/Trunk/build/../src/decode/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/fourier/include -I/home/257916/server/test/v1.1/Trunk/build/../src/fourier/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/include -I/home/257916/server/test/v1.1/Trunk/build/../src/service/include -I/home/257916/server/test/v1.1/Trunk/build/../src/service/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/draw/include -I/home/257916/server/test/v1.1/Trunk/build/../src/draw/test/include -I/home/257916/server/test/v1.1/Trunk/build/../tools/include -fPIC -ffunction-sections -fdata-sections -g -Wall -O1 -c -o ############################################################ mkdir -p /home/257916/server/test/v1.1/Trunk/build/../bin/atlas310 aarch64-ascend310-linux-gnu-g++ -o draw test/src/draw_pic_test.o -Wl,--gc-sections -static -L/home/257916/server/test/v1.1/Trunk/build/../src/thirdpart/libs/atlas310 -L/home/257916/server/test/v1.1/Trunk/build/../lib/atlas310 -ldw -lbs -lpthread -lm /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: error adding symbols: file in wrong format collect2: error: ld returned 1 exit status make[1]: *** [draw] Error 1 make[1]: Leaving directory `/home/257916/server/test/v1.1/Trunk/src/draw' make: *** [draw] Error 2
根你提供的信息,编译过程中出现了一个错误。错误信息显示 ld (链接器) 试图处理一个格式错误的文件。
具体来说,ld 报告了以下错误:
```
/opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
```
这个错误通常发生在尝试链接不兼容的目标文件时。可能有以下几个原因导致这个错误:
1. 目标文件 `test/src/draw_pic_test.o` 的格式不正确,不符合链接器的预期。你可能需要检查这个目标文件是否由正确的编译器生成,并且是否与你的交叉编译目标匹配。
2. 链接器正在尝试将不同架构的目标文件链接在一起。请确保你的交叉编译环境配置正确,并且编译器和链接器的目标架构与你的目标平台一致。
3. 缺少必要的库文件。请确保你的链接命令中指定的库文件存在,并且位于正确的位置。
针对这个错误,你可以尝试以下几个步骤来解决问题:
1. 检查目标文件的生成方式和来源。确保使用正确的编译器和编译选项生成目标文件,并确认目标文件的格式正确。
2. 检查你的交叉编译环境配置,确保交叉编译器和链接器的目标架构与你的目标平台一致。
3. 检查链接命令中指定的库文件路径是否正确,并确保库文件存在。
如果问题仍然存在,可能需要更多的上下文信息来进行进一步的诊断和解决。
阅读全文