读《New Riders - Advanced Linux Programming.chm》笔记1(未完)
2006-04-14 11:40
411 查看
c++的头文件
#ifdef __cplusplus
extern "C" {
#endif
extern double reciprocal (int i);
#ifdef __cplusplus
}
#endif
3,gcc -c **.c 编译一个c文件,生成.o
g++ -c **.cpp 告诉编译器只编译为一个目标文件.o,如果没有-c,编译器会连接其他目标文件生成可执行文件
4,./ ../
5,用-I来指定头文件的位置,(默认的话编译器会去找当前目录和标准库目录)
% g++ -c -I ../include reciprocal.cpp
6, 优化代码
% g++ -c -O2 reciprocal.cpp
7,得到gcc的帮助
info gcc
8,连接两个目标文件
% g++ -o reciprocal main.o reciprocal.o
连接了两个目标文件生成了reciprocal执行文件
% ./reciprocal 7 //执行(int main (int argc, char **argv) 这样的主函数就可以知道要输入参数了吗,实验一下<暂时的见解:运行程序:reciprocal 7,则argc为2,argv[0]为reciprocal,argv[1]为7>)
The reciprocal of 7 is 0.142857 //系统返回消息
连接两个目标文件和库文件 -l
% g++ -o reciprocal main.o reciprocal.o -lpam//这里的-l不和pam分开的吗,pam会自动加上lib前缀和.a后缀,
那就是说库文件是以.a为后缀
% g++ -o reciprocal main.o reciprocal.o -L/usr/local/lib/pam -lpam//当库文件不是默认目录时
9,自动编译
建一个makefile文件
reciprocal: main.o reciprocal.o //要编译的目标
g++ $(CFLAGS) -o reciprocal main.o reciprocal.o //编译规则(这个里要有tab空格,如果在emacs写会自动加上), $(CFLAGS)
为变量,可以给他付值
main.o: main.c reciprocal.hpp
gcc $(CFLAGS) -c main.c
reciprocal.o: reciprocal.cpp reciprocal.hpp
g++ $(CFLAGS) -c reciprocal.cpp
clean: //当调用% make clean时执行
rm -f *.o reciprocal
运行make命令
当%make时,执行除clean的目标
% make clean 执行clean目标.
当重编译时,只编译源文件有修改的目标
给make文件变量付值
% make clean
rm -f *.o reciprocal
% make CFLAGS=-O2
gcc -O2 -c main.c
g++ -O2 -c reciprocal.cpp
g++ -O2 -o reciprocal main.o reciprocal.o
#ifdef __cplusplus
extern "C" {
#endif
extern double reciprocal (int i);
#ifdef __cplusplus
}
#endif
3,gcc -c **.c 编译一个c文件,生成.o
g++ -c **.cpp 告诉编译器只编译为一个目标文件.o,如果没有-c,编译器会连接其他目标文件生成可执行文件
4,./ ../
5,用-I来指定头文件的位置,(默认的话编译器会去找当前目录和标准库目录)
% g++ -c -I ../include reciprocal.cpp
6, 优化代码
% g++ -c -O2 reciprocal.cpp
7,得到gcc的帮助
info gcc
8,连接两个目标文件
% g++ -o reciprocal main.o reciprocal.o
连接了两个目标文件生成了reciprocal执行文件
% ./reciprocal 7 //执行(int main (int argc, char **argv) 这样的主函数就可以知道要输入参数了吗,实验一下<暂时的见解:运行程序:reciprocal 7,则argc为2,argv[0]为reciprocal,argv[1]为7>)
The reciprocal of 7 is 0.142857 //系统返回消息
连接两个目标文件和库文件 -l
% g++ -o reciprocal main.o reciprocal.o -lpam//这里的-l不和pam分开的吗,pam会自动加上lib前缀和.a后缀,
那就是说库文件是以.a为后缀
% g++ -o reciprocal main.o reciprocal.o -L/usr/local/lib/pam -lpam//当库文件不是默认目录时
9,自动编译
建一个makefile文件
reciprocal: main.o reciprocal.o //要编译的目标
g++ $(CFLAGS) -o reciprocal main.o reciprocal.o //编译规则(这个里要有tab空格,如果在emacs写会自动加上), $(CFLAGS)
为变量,可以给他付值
main.o: main.c reciprocal.hpp
gcc $(CFLAGS) -c main.c
reciprocal.o: reciprocal.cpp reciprocal.hpp
g++ $(CFLAGS) -c reciprocal.cpp
clean: //当调用% make clean时执行
rm -f *.o reciprocal
运行make命令
当%make时,执行除clean的目标
% make clean 执行clean目标.
当重编译时,只编译源文件有修改的目标
给make文件变量付值
% make clean
rm -f *.o reciprocal
% make CFLAGS=-O2
gcc -O2 -c main.c
g++ -O2 -c reciprocal.cpp
g++ -O2 -o reciprocal main.o reciprocal.o
相关文章推荐
- 读《New Riders - Advanced Linux Programming.chm》笔记4
- Notes for Advanced Linux Programming - 2. Writing Good GNU/Linux Software
- Now launching Advanced Linux Programming Chinese wiki site
- 本地套接字示例[来源:Advanced Linux Programming]
- Notes for Advanced Linux Programming - 3. Processes
- Notes for Advanced Linux Programming - 4. Threads
- Understanding Unix/Linux Programming 笔记:chapter 11:连接到近端或远端的进程:服务器与Socket(套接字)
- 《Advanced Linux Programming》读书笔记(1)
- Beginning Linux Programming 笔记(五)终端
- Beginning Linux Programming 笔记(一) 新的开始
- Notes for Advanced Linux Programming - 6. Devices
- Notes for Advanced Linux Programming - 5. Interprocess Communication
- 《Advanced Linux Programming》读书笔记(1)
- 【笔记】防线-企业linux安全:企业Linux安全系统防护-(未完)
- <Programming_in_Lua> 笔记(未完)
- Beginning Linux Programming 笔记(三) 文件处理
- Notes for Advanced Linux Programming - 4. Threads
- Notes for Advanced Linux Programming - 6. Devices
- Beginning Linux Programming 4th Edition 学习笔记 - Chapter 1:Getting started
- 《Advanced Linux Programming》读书笔记(1)