开始linux下的编程


1使用命令行编译程序

Linux下的编译器
在Linux下,我们使用g++或gcc来编译程序。 g++ : 编译C++代码
gcc: 编译C的代码

(注:gcc也可以编译C++代码,相对麻烦一些)

示例1
编译单个源文件:
第一步:g++ main.cpp ‐o helloworld
其中,
g++ 编译器
main.cpp 源文件列表
‐o helloworld : 输出文件(output)
第二步:运行程序
./helloworld

示例2
编译多个源文件:
g++ main.cpp other.cpp ‐o helloworld
(展示编译出错、修改代码、重新编译的过 程)

注意事项
(1) 编译的时候,只指定源文件(.cpp),不指定头文件(.h)
(2)在Linux下文件名区别大小
(3) 程序的运行
./helloworld 前面必须加路径 ,不能写成 helloworld

小结:
第一步;编译 g++ main.cpp other.cpp ‐o helloworld
第二步:运行 ./helloworld

2Linux下的可执行程序

可执行程序
“可执行”是一个形容词
① 该文件是一个程序文件
② 该文件有x属性
满足这两个条件,它才能执行。

可执行程序
$ ls ‐l helloworld
‐rwxrwxr‐x 1 mytest mytest …
首先它是一个程序文件,然后它有x属性,所以 它可以被执行。

PATH环境变量
PATH环境变量描述了可执行程序的搜索路径 /bin:/usr/bin:/usr/local/bin 。。。 若干路径位置,以分号隔开
显示PATH的值:
echo $PATH

当你输入一个命令名时,系统会从PATH描述的路径里 搜索此命令
所以,直接输入helloworld会显示“命令找不到 (command not found)
第一种办法:执行程序时加上路径 ./helloworld
/home/mytest/…/helloworld
第二种办法:把helloworld拷贝到PATH的某个目录下
第三种办法:重设环境变量PATH

在Windows能执行吗

  1. 文件格式不一样
  2. 指令集可能不一样
  3. 大小端不一样
  4. 总结一下:平台一样,没法跨平台执行

Linux下,不关心后缀,只关心权限。

小结:
1,可执行程序
2,PATH环境变量
3,与windows区别

3 编译与链接

编译与链接
程序的生成过程分为两步:
编译:compile,将*.cpp ‐> .o
链接:link, 将所有的
.o ‐> executable
(VC展示这两步过程。。。)

在Linux下开发时,要严格区分这两步过程。 使用 ‐c 选项,生成中间文件*.o

一、编译
g++ ‐c main.cpp ‐o main.o
g++ ‐c other.cpp ‐o other.o
(加上‐c就表示进行的是compile,不是link)

二、链接
g++ main.o other.o ‐o helloworld
(没有加‐c,表示生成最终的可执行程序)
各个cpp编译的顺序无关

查看符号
符号:symbol 指的是函数和全局变量
使用nm命令可以查看中间文件.o和最终程序里的符号
$ nm main.o
U _Z5Otherv
U _Z7Exampleii
U __gxx_personality_v0
00000000
T main (文件里面包含的函数) U printf (外部函数)
观察main.o里的符号…
U: undefined, T: text, Example函数名, ii参数列表

显然,
main.o
main函数(T)
Other函数(U)
Example函数(U)
other.o
Other(T)
Example(T)
所以,把main.o和other.o链接在一起。。。
链接:确保所有的Undefined的符号都有定义

undefined reference错误
在链接时,如果有函数未找到定义,则报告 undefined reference错误。。。

小结
(1)先编译,后链接
(2) 查看符号:nm main.o
(3)在link的时候,所有的符号都必须有定义,(T)

4使用VC编辑器

选择一个高效的编辑器
VC > notepad++ > gedit > vi
演示:使用VC来编辑代码
注意:VC仅充当编辑器的角色,不用来编译

学习资源 《C语言/C++学习指南》Linux开发篇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值