码迷,mamicode.com
首页 > 其他好文 > 详细

make file 和 GCC标志学习

时间:2017-05-13 11:26:08      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:开始   deb   pos   content   target   htm   first   tab   com   

GCC:

-Wall : 打开警告标志

-std=standard : -ansi 相等 -std=c89

-ansi : 指定代码应该符合什么标准。

-c : Compile and assemble, but do not link.

[-Dmacro[=defn]...] : 定义宏

-S gcc -S sum.c -o sum.s 要求 gcc 產生組合語言程式碼
-E gcc -E hello.c -o hello.i 只執行巨集展開, 但不產生目的檔
-D gcc -DDEBUG sum.c -o sum 定義 #define DEBUG 後才編譯
-g gcc -g sum.c -o sum 編譯時加入除錯資訊, 讓 gdb 可遠端除錯
-c gcc -c hello.c -o hello.o 編譯並組譯程式碼, 但不做連結
-I gcc -c -I /home/ccc/include -o hello.o hello.c 指定引用檔 (*.h) 的路徑
-L gcc -L /home/ccc/lib -o hello hello.o 指定函式庫 (*.a) 的路徑
-l gcc -L /home/ccc/lib -lm -lpthread -o hello hello.o 指定函式庫的名稱
-shared gcc -shared a.o b.o c.o -o libabc.so 產生共享函式庫 (*.so)
-fPIC gcc -g -rdynamic -fPIC -o test test.c 輸出 position-independent code, 一般在輸出動態連結函式庫時使用
-Werror gcc -Werror sum.c -o sum.s 將警告視為錯誤, 一旦有警告就不輸出目標檔
-O0 gcc -S -O0 sum.c -o sum.s 不進行最佳化 (預設)
-O1 gcc -S -O1 sum.c -o sum.s 第 1 級的最佳化 (較差)
-O2 gcc -S -O2 sum.c -o sum.s 第 2 級的最佳化
-O3 gcc -S -O3 sum.c -o sum.s 第 3 級的最佳化 (最高等級)
-dr gcc -c -dr sum.c -o sum.o 輸出 RTL 中間碼

 


 

make file:

https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html

% 萬用字元、$@ 特殊符號、.PHONY 假目標

$@ 代表工作目標. The file name of the target of the rule. 

$^ 代表所有的必要條件

$< 代表第一個必要條件. The name of the first prerequisite. 

$? The names of all the prerequisites that are newer than the target, with spaces between them. 

$% The target member name, when the target is an archive member. 

从1文件夹里面的makefile开始,

然后包含了$(ROOT)/Make.defines.$(PLATFORM)这个平台的makefile,他里面主要定义了:根据这个例子,理解APUE的编译,那就是

CC是编译器,COMPILE.c是编译器.c文件的选项,LINK.c是链接.c文件的编译选项,LDFLAGS是库文件夹的位置,LDLIBS是外部库的所有对象(EXTRALIBS没看到定义),CFLAGS是编译的标志

然后在1的makefile中,定义了,如何编译这个程序。

最后包含$(ROOT)/Make.libapue.inc这个makefile文件,在这个文件里面,是进入lib这个文件夹,并且进行编译,

在$(ROOT)/lib的makefile文件里面,进行了下面的工作, 在这里面,进行了真正的编译静态库的工作。

 


 

AR的参数:

http://blog.csdn.net/zougangx/article/details/3073604

http://www.voidcn.com/blog/yangruibao/article/p-635550.html

-r  将文件插入备存文件中。

v  程序执行时显示详细的信息。 

make file 和 GCC标志学习

标签:开始   deb   pos   content   target   htm   first   tab   com   

原文地址:http://www.cnblogs.com/hwy89289709/p/6848255.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!