山高疑日近,海阔觉天低

GCC编译选项说明

下面的编译是我摘抄的交叉编译器编译的选项,我们来逐行分析每个编译选项

GCC常用库文件:

dl库包含,库文件操作函数.是显式加载动态库的动态函数库,如dlopen dlclose,等等
m库,math数学计算库文件
-lz      压缩库(Z)
-lc     标准C库(C lib)

arm-linux-gnueabihf-g++
-c        //编译、汇编到目标代码,不进行链接--查看最后一行生成的.o文件
-pipe     //使用管道代替临时文件--编译过程不生成中间文件用管道方式
-O2       /*O0不优化(默认)
          O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。
          O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 
          O3在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化*/
-march=armv7-a      //cpu-type
-mtune=cortex-a7
-mfpu=neon
-mfloat-abi=hard
-O2
-DLINUX=1
-std=gnu++11      //Determine the language standard;GNU dialect of -std=c++11.
-Wall             //turns on the following warning flags 开启所有的报警
-W
-D_REENTRANT
-fPIC            //生成与位置无关的代码 好像只在生成库文件有用
-DQT_NO_DEBUG    //Predefine name as a macro, with definition 1
-DQT_WIDGETS_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-I../untitled2
-I.
-I/opt/qt5.12.7_ssd/include
-I/opt/qt5.12.7_ssd/include/QtWidgets
-I/opt/qt5.12.7_ssd/include/QtGui
-I/opt/qt5.12.7_ssd/include/QtCore
-I.
-I.
-I/opt/qt5.12.7_ssd/mkspecs/linux-ssd -o main.o ../untitled2/main.cpp

[翻译]15个最常用的GCC编译器参数

https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html

Sqlite3 下载

Sqlite3 编译:官方指导

Sqlite3 编译:选项推荐

1.命令行工具Sqlite3

gcc -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION shell.c sqlite3.c -o sqlite3
$CC -c -pipe -std=c++0x -O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -DLINUX=1 -Wall -W -fPIC shell.c sqlite3.c -lpthread -ldl -lm -o sqlite3

2 静态库文件,优点:不用再rootfs中增加sqlite的so库文件,嵌入式编译环境不用移植sqlite,缺点:最终文件变大,静态库相对于动态不需要”-fPIC  -shared

$CC -c -std=c++0x -O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -DLINUX=1 -Wall -W  -lpthread -ldl -lm sqlite3.c -o sqlite3.o
arm-linux-gnueabihf-ar rcs libsqlite3.a sqlite3.o

3 动态库文件,编译最终文件时不用每次都要吧静态库需要的依赖库再次引用

$CC  -std=c++0x -O3 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -DLINUX=1 -Wall -W -fPIC -shared sqlite3.c -lpthread -ldl -lm -o libsqlite3.so

4 直接使用,直接使用和静态库有点类似 优点:没有移植问题,拿来就用,缺点,首次编译时间变长,如果误修改源文件可能造成不可靠后果

赞(0) 打赏
未经允许不得转载:Mr.Zhang » GCC编译选项说明

你的打赏是我的动力

登录

找回密码

注册