g++/gcc compile_options

这篇博客详细列举了g++/gcc编译器的各种常用选项,包括优化、代码生成、输出文件、预处理器、语言设置、杂项以及链接阶段的参数。如-D用于宏定义,-I用于添加头文件搜索路径,-L用于添加库文件搜索路径,-O系列选项用于代码优化,-g用于生成调试信息,-shared和-static分别用于动态和静态链接等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

g++/gcc compile_options

常用:

-Ddef=1 定义#define def=1
-Udef 定义#undef def
-g 生成调试信息
-Idir 添加头文件的寻找目录dir
-Ldir 添加库文件的寻找目录dir
-ltest 添加库libtest.a
-m486 针对 486 进行代码优化
-o name输出文件名
-Os/1/2/3/s 代码优化
-share /-static 动态静态编译
-w不生成警告信息
-Wall生成所有警告信息
-fvisibility=hidden
-fPIC 编译动态库时,要求产生与位置无关代码(Position-Independent Code)
-m32/64/x32

优化

-O1 最小化空间 minimize space
-Op[-] 改善浮点数一致性 improve floating-pt consistency
-O2 最大化速度 maximize speed
-Os 优选代码空间 favor code space
-Oa 假设没有别名 assume no aliasing
-Ot 优选代码速度 favor code speed
-Ob 内联展开(默认 n=0) inline expansion (default n=0)
-Ow 假设交叉函数别名 assume cross-function aliasing
-Od 禁用优化(默认值) disable optimizations (default)
-Ox 最大化选项。(-Ogityb2 -Gs) maximum opts. (-Ogityb1 -Gs)
-Og 启用全局优化 enable global optimization
-Oy[-] 启用框架指针省略 enable frame pointer omission
-Oi 启用内建函数 enable intrins

#THIS FILE IS AUTO GENERATED FROM THE TEMPLATE! DO NOT CHANGE! set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) cmake_minimum_required(VERSION 3.28) # specify cross-compilers and tools set(CMAKE_C_COMPILER arm-none-eabi-gcc) set(CMAKE_CXX_COMPILER arm-none-eabi-g++) set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) set(CMAKE_AR arm-none-eabi-ar) set(CMAKE_OBJCOPY arm-none-eabi-objcopy) set(CMAKE_OBJDUMP arm-none-eabi-objdump) set(SIZE arm-none-eabi-size) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) # project settings project(untitled C CXX ASM) set(CMAKE_CXX_STANDARD 17) set(CMAKE_C_STANDARD 11) #Uncomment for hardware floating point #add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING) #add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) #add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16) #Uncomment for software floating point #add_compile_options(-mfloat-abi=soft) add_compile_options(-mcpu=cortex-m7 -mthumb -mthumb-interwork) add_compile_options(-ffunction-sections -fdata-sections -fno-common -fmessage-length=0) # uncomment to mitigate c++17 absolute addresses warnings #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-register") # Enable assembler files preprocessing add_compile_options($<$<COMPILE_LANGUAGE:ASM>:-x$<SEMICOLON>assembler-with-cpp>) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Release") message(STATUS "Maximum optimization for speed") add_compile_options(-Ofast) elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") message(STATUS "Maximum optimization for speed, debug info included") add_compile_options(-Ofast -g) elseif ("${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") message(STATUS "Maximum optimization for size") add_compile_options(-Os) else () message(STATUS "Minimal optimization, debug info included") add_compile_options(-Og -g) endif () include_directories(Core/Inc Drivers/STM32H7xx_HAL_Driver/Inc Drivers/STM32H7xx_HAL_Driver/Inc/Legacy Drivers/CMSIS/Device/ST/STM32H7xx/Include Drivers/CMSIS/Include) add_definitions(-DDEBUG -DUSE_HAL_DRIVER -DSTM32H743xx) file(GLOB_RECURSE SOURCES "Core/*.*" "Drivers/*.*") set(LINKER_SCRIPT ${CMAKE_SOURCE_DIR}/STM32H743XIHX_FLASH.ld) add_link_options(-Wl,-gc-sections,--print-memory-usage,-Map=${PROJECT_BINARY_DIR}/${PROJECT_NAME}.map) add_link_options(-mcpu=cortex-m7 -mthumb -mthumb-interwork) add_link_options(-T ${LINKER_SCRIPT}) add_executable(${PROJECT_NAME}.elf ${SOURCES} ${LINKER_SCRIPT}) set(HEX_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.hex) set(BIN_FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.bin) add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE} COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE} COMMENT "Building ${HEX_FILE} Building ${BIN_FILE}")
03-10
qwe@qwe-MS-Challenger-H610ITX-2LAN-V3:~/Desktop/catkin_ws$ catkin_make Base path: /home/qwe/Desktop/catkin_ws Source space: /home/qwe/Desktop/catkin_ws/src Build space: /home/qwe/Desktop/catkin_ws/build Devel space: /home/qwe/Desktop/catkin_ws/devel Install space: /home/qwe/Desktop/catkin_ws/install #### #### Running command: "make cmake_check_build_system" in "/home/qwe/Desktop/catkin_ws/build" #### #### #### Running command: "make -j12 -l12" in "/home/qwe/Desktop/catkin_ws/build" #### [ 4%] Generating ui_main_window.h Scanning dependencies of target _handmsg_generate_messages_check_deps_handtarget Scanning dependencies of target _handmsg_generate_messages_check_deps_handPosCaliData Scanning dependencies of target _handmsg_generate_messages_check_deps_igh Scanning dependencies of target std_msgs_generate_messages_py Scanning dependencies of target hand_igh_v2_node Scanning dependencies of target _handmsg_generate_messages_check_deps_handstatus [ 6%] Generating include/hand_gui_2/moc_qnode.cpp Scanning dependencies of target _handmsg_generate_messages_check_deps_HandPlanPoint [ 4%] Generating ui_lrhandform.h [ 4%] Generating qrc_images.cpp Scanning dependencies of target _handmsg_generate_messages_check_deps_tactile [ 7%] Built target std_msgs_generate_messages_py [ 7%] Generating include/hand_gui_2/moc_finger.cpp [ 9%] Generating include/hand_gui_2/moc_lrhandform.cpp [ 11%] Generating include/hand_gui_2/moc_main_window.cpp /home/qwe/Desktop/catkin_ws/src/qtros/include/hand_gui_2/finger.hpp:0: Note: No relevant classes found. No output generated. [ 12%] Building CXX object hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/main.cpp.o [ 12%] Built target _handmsg_generate_messages_check_deps_handstatus [ 14%] Building CXX object hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/pdos.cpp.o cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/build.make:76: hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/pdos.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: *** [hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/build.make:63: hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/main.cpp.o] Error 1 [ 14%] Built target _handmsg_generate_messages_check_deps_tactile [ 15%] Built target _handmsg_generate_messages_check_deps_handtarget [ 15%] Building CXX object hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/callback.cpp.o [ 15%] Built target _handmsg_generate_messages_check_deps_igh Scanning dependencies of target std_msgs_generate_messages_nodejs cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/build.make:89: hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/src/callback.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:940: hand_igh_v2/CMakeFiles/hand_igh_v2_node.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 15%] Built target _handmsg_generate_messages_check_deps_handPosCaliData Scanning dependencies of target std_msgs_generate_messages_eus Scanning dependencies of target std_msgs_generate_messages_cpp Scanning dependencies of target _demo_py_generate_messages_check_deps_nn [ 15%] Built target std_msgs_generate_messages_nodejs Scanning dependencies of target std_msgs_generate_messages_lisp [ 15%] Built target _handmsg_generate_messages_check_deps_HandPlanPoint [ 15%] Built target std_msgs_generate_messages_cpp [ 15%] Built target std_msgs_generate_messages_eus [ 15%] Built target std_msgs_generate_messages_lisp [ 15%] Built target _demo_py_generate_messages_check_deps_nn Scanning dependencies of target hand_gui_2 [ 17%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/src/lrhandform.cpp.o [ 19%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/src/finger.cpp.o [ 20%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/qrc_images.cpp.o [ 23%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/src/main.cpp.o [ 23%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/src/main_window.cpp.o [ 25%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/src/qnode.cpp.o [ 26%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_finger.cpp.o [ 28%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_lrhandform.cpp.o [ 31%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_qnode.cpp.o [ 31%] Building CXX object qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_main_window.cpp.o cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:119: qtros/CMakeFiles/hand_gui_2.dir/src/main.cpp.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:93: qtros/CMakeFiles/hand_gui_2.dir/src/finger.cpp.o] Error 1 make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:132: qtros/CMakeFiles/hand_gui_2.dir/src/main_window.cpp.o] Error 1 cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:106: qtros/CMakeFiles/hand_gui_2.dir/src/lrhandform.cpp.o] Error 1 make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:145: qtros/CMakeFiles/hand_gui_2.dir/src/qnode.cpp.o] Error 1 cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:171: qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_finger.cpp.o] Error 1 cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:197: qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_main_window.cpp.o] Error 1 cc1plus: error: ‘-Werror=volatile’: no option -Wvolatile make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:158: qtros/CMakeFiles/hand_gui_2.dir/qrc_images.cpp.o] Error 1 make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:210: qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_qnode.cpp.o] Error 1 make[2]: *** [qtros/CMakeFiles/hand_gui_2.dir/build.make:184: qtros/CMakeFiles/hand_gui_2.dir/include/hand_gui_2/moc_lrhandform.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:697: qtros/CMakeFiles/hand_gui_2.dir/all] Error 2 make: *** [Makefile:141: all] Error 2 Invoking "make -j12 -l12" failed
07-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值