build-base与g++ gcc的区别
时间: 2023-06-06 12:08:23 浏览: 251
Build-base 和 GCC 都是编译器相关的工具,但是它们有着不同的作用。build-base 是一个 Debian 发行版下的基础工具包,包含了一些开发者所需要的工具和库文件,例如 make、gcc、g++ 等等。而 GCC 是 GNU Compiler Collection 的缩写,它是一个跨平台的编译器集合,支持多种语言。它可以将高级语言的源代码编译成可执行文件、动态链接库等文件。两者的作用有所差异,但常常同时使用。
相关问题
(base) lmj@lmj-Ubuntu:/opt/sdk.20230309/horus_sdk_release/build$ sudo cmake ../ -- cmake version 3.22.1 CMake Deprecation Warning at CMakeLists.txt:4 (cmake_minimum_required): Compatibility with CMake < 2.8.12 will be removed from a future version of CMake. Update the VERSION argument <min> value or use a ...<max> suffix to tell CMake that the project does not need compatibility with older versions. -- The C compiler identification is unknown -- The CXX compiler identification is unknown CMake Error at CMakeLists.txt:11 (project): The CMAKE_C_COMPILER: arm-linux-gnueabihf-gcc is not a full path and was not found in the PATH. Tell CMake where to find the compiler by setting either the environment variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. CMake Error at CMakeLists.txt:11 (project): The CMAKE_CXX_COMPILER: arm-linux-gnueabihf-g++ is not a full path and was not found in the PATH. Tell CMake where to find the compiler by setting either the environment variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path to the compiler, or to the compiler name if it is in the PATH. -- Configuring incomplete, errors occurred! See also "/opt/sdk.20230309/horus_sdk_release/build/CMakeFiles/CMakeOutput.log". See also "/opt/sdk.20230309/horus_sdk_release/build/CMakeFiles/CMakeError.log".
根据你提供的错误信息,看起来 CMake 在配置项目时无法找到 C 和 C++ 编译器。这可能是由于缺少路径或编译器未正确安装所致。你可以尝试以下解决方法:
1. 确保你已经正确安装了 `arm-linux-gnueabihf-gcc` 和 `arm-linux-gnueabihf-g++` 编译器。你可以通过在终端中运行 `arm-linux-gnueabihf-gcc --version` 和 `arm-linux-gnueabihf-g++ --version` 来检查它们是否已安装。
2. 如果编译器已正确安装,但仍然无法找到,请尝试使用绝对路径设置环境变量 `CC` 和 `CXX`。例如,如果编译器的完整路径为 `/path/to/arm-linux-gnueabihf-gcc` 和 `/path/to/arm-linux-gnueabihf-g++`,你可以在终端中运行以下命令:
```
export CC=/path/to/arm-linux-gnueabihf-gcc
export CXX=/path/to/arm-linux-gnueabihf-g++
```
然后再次运行 `sudo cmake ../`。
3. 如果以上方法仍然无效,你可以尝试编辑 CMakeLists.txt 文件,在文件开头添加以下内容,指定编译器的完整路径:
```
set(CMAKE_C_COMPILER "/path/to/arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/path/to/arm-linux-gnueabihf-g++")
```
然后保存文件并再次运行 `sudo cmake ../`。
希望这些方法能够解决你的问题。如果你有任何其他疑问,请随时提问。
编译选项/usr/bin/g++ -Wl,--enable-new-dtags -Wl,-z,origin -Wl,-rpath,$ORIGIN/../../../../../5.14.1/gcc_64/lib -Wl,-rpath,$ORIGIN/../../../../../5.14.1/gcc_64/lib -s -o analogclock .obj/analogclock.o .obj/main.o .obj/moc_analogclock.o -L/home/qt/openssl-1.1.1d/lib /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Gui.so /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Core.so -lGL -lpthread是否正确
/usr/bin/g++编译选项中的大多数选项都是链接器选项,用于指定链接器的行为和规则。这些选项一般会影响可执行文件的生成、模块的链接以及共享库的链接等。
根据你提供的编译选项,可以看出你是在使用g++编译器来编译一个名为analogclock的可执行文件,使用了以下链接器选项:
- -Wl,--enable-new-dtags:启用新的DTags,用于指定可执行文件依赖的共享库。
- -Wl,-z,origin:指定可执行文件的运行路径为可执行文件所在的目录。
- -Wl,-rpath,$ORIGIN/../../../../../5.14.1/gcc_64/lib:指定运行时动态链接器查找共享库的路径。
- -s:生成一个无符号的可执行文件。
- -L/home/qt/openssl-1.1.1d/lib:指定共享库搜索路径。
- /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Widgets.so:指定需要链接的共享库,这里是Qt5Widgets库。
- /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Gui.so:指定需要链接的共享库,这里是Qt5Gui库。
- /home/farsight/farsight/feng/buildroot-2021.02.1/output/build/qt5base-5.15.2/lib/libQt5Core.so:指定需要链接的共享库,这里是Qt5Core库。
- -lGL:指定需要链接的静态库,这里是OpenGL库。
- -lpthread:指定需要链接的静态库,这里是pthread库。
根据这些编译选项,可以初步判断编译选项是否正确。但具体是否正确还需要根据实际情况来判断,比如是否需要链接其他库等。
阅读全文