一些常识问题:
常识一:更新ubuntu系统:
#sudo apt-get update 获得最近的软件包的列表;列表中包含一些包的信息,比如这个包是否更新过
#sudo apt-get dist-upgrade 如果这个包没有发布更新,就不管它;如果发布了更新,就把包下载到电脑上,并安装。
apt-get update 指令会同步使用者端和APT 伺服器的RPM 索引清单(package list),APT 伺服器的RPM 索引清单置于base 资料夹内,使用者端电脑取得base 资料夹内的bz2 RPM 索引清单压缩档后,会将其解压置放于/var/state/apt/lists/,而使用者使用apt-get install 或apt-get dist-upgrade 指令的时候,就会将这个资料夹内的资料和使用者端电脑内的RPM 资料库比对,如此一来就可以知道那些RPM 已安装、未安装、或是可以升级的。
二、安装g++(g++是GCC中的一个工具,专门来编译C++语言的)
sudo apt-get install build-essential
sudo apt-get update
sudo apt-get install g++
编译步骤如下:
GCC的参数有:( 也是分步实现)
-E 让GCC在预处理结束后停止编译 g++ -E hello.cpp -o hello.i
-c 将hello.i编译成目标代码 g++ -c hello.i -o hello.o
将目标文件连接成可执行文件 g++ hell.o -o hello
可以一步实现 g++ hello.cpp -o hello
二、假如有两个以上源文件应该一下编译。
一步就实现 g++ foo1.cpp foo2.cpp -o foo
也可以分步实现 g++ -c foo1.cpp -o foo1.o
g++ -c foo2.cpp -o foo2.o
g++ foo1.o foo2.o -o foo
三、GCC一些常用选项
1、产生警告信息的选项大多数以-W开头 其中有-Wall
g++ -Wall hello.cpp -o hello
2、将所有的警告当成错误的选项-Werror
g++ -Werror hello.cpp -o hello
3、寻找头文件选项 -I (linux默认路径:头文件在/usr/include/下),不在这个路径下就要用-I指定。
gcc foo.cpp -I/home/include -o foo
4、 库依赖选项 -L (linux默认路径:库文件在/usr/lib/下),不在这个路径下就要用-L指定。
g++ foo.cpp -L/home/lib -lfoo -o foo
库就是将源文件编译之后生成的目标文件的集合。
库命名以lib开头。
库有静态库(通常以.a结尾)和动态库(通常以.so结尾)
默认情况下,g++以动态库形式连接。如果要静态库连接则要用-static指定(g++ foo.cpp -L/home/lib -static -lfoo -o foo)
5、优化选项 -On (n取0到3之间)
四、介绍一些GNU 二进制链工具
1、ar命令(也称为工具) 可以用来编译成静态库
ar [-] {操作选项} {任选项} [成员名] [count] archive files....
ar r v libtest.a hello.o hello1.o 生成一个库名为test,该库中存放了hello.o和hello1.o这两个模块。
操作项:d (删除)、 m(移动)、p(标准输出)、q(快速追加)、r(在库中插入模块)、t(显示库的模块清单)、x(从库中提取一个成员)。
任选项:a(成员后面添加一个新文件)、b(成员前面添加一个新文件)、c(创建一个库)、f(截短指定名字)、v(显示执行操作选项的附加信息)。
2、编译成动态库
分步完成: gcc -fPIC -c func.cpp -o func.o
gcc -shared -o libfunc.so func.o
一步就完成:gcc -fPIC -shared -o libfunc.so func.cpp
以上内容转自:
http://blog.csdn.net/nashouat/article/details/8331190http://blog.163.com/dawnsword@126/blog/static/162805915201032304555891/