贡献者: addis
/usr/bin/gcc 和 /usr/bin/g++ symlink 的版本! 因为一些安装过程(例如 cuda)需要 gcc 编译 kernel module,必须使用默认版本.如果已经改变了,就卸载 gcc 和 g++,再重装一次就行.
-I <dir> 选项可以声明 .h 所在的目录
-c 选项只编译不 link
g++ -c <other flags> <dir1>/1.cpp <dir2>/2.cpp 3.cpp 4.cpp.....
/usr/local/include/ 下的头文件
-D 宏 定义宏
-O3 是最优化,-g 是调试,如果不调试,需要手动定义 -D NDEBUG
-g 不包含一些信息如宏定义,需要用 -g3,要打出 Macro 的位置和定义,用 info macro 宏名
main() 函数开始,如果有未定义的 symbol 就留到以后再找,而把没有用的 symbol 抛弃.这样能提高效率.
g++ hello.cpp -L. -( -la -lb -)
g++ main.cpp -fsanitize=address -static-libasan -g
-ftrapv,亲测支持 int, long, long long(其他类型貌似不行),运行时会终止程序,可以用 gdb 找到位置,不能在程序中 catch.如果想支持所有整数类型,可以用 SafeInt 库.
g++ 的默认输出是 stderr 而不是 stdout,所以如果 pipe 的时候要指定 stderr
g++ 在链接阶段就是调用 ld 命令
-L 指定添加 -l 的搜索路径
ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012 可以查看 linker 的默认搜索路径
g++ -E -P xxx.cpp > out.txt 会显示 preprocessor 的输出,其中 -P 会删掉 linkmarker(用于显示代码在头文件中来源)
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利