实验4-linux编程环境熟悉资料

上传人:今*** 文档编号:112863780 上传时间:2019-11-07 格式:PPT 页数:20 大小:239KB
返回 下载 相关 举报
实验4-linux编程环境熟悉资料_第1页
第1页 / 共20页
实验4-linux编程环境熟悉资料_第2页
第2页 / 共20页
实验4-linux编程环境熟悉资料_第3页
第3页 / 共20页
实验4-linux编程环境熟悉资料_第4页
第4页 / 共20页
实验4-linux编程环境熟悉资料_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《实验4-linux编程环境熟悉资料》由会员分享,可在线阅读,更多相关《实验4-linux编程环境熟悉资料(20页珍藏版)》请在金锄头文库上搜索。

1、实验4-Linux编程环境,helloworld,/* hello.c */ #include #include int main() printf(“Hello Worldn”); exit(0); ,编译和运行,$gcc o hello hello.c -o选项表示指定目标生成文件 $./hello Hello World $,shell默认是搜索PATH环境变量下的可执行程序,如果执行$hello, 且PATH并不包含当前目录,则shell就找不到可执行程序,可以通过echo $PATH查看当前该环境变量的值 解决方法: 采用$./hello, 即执行当前目录下的hello 执行程序前修

2、改当前窗口的PATH环境变量使其包含当前目录,即PATH=$PATH:. export PATH=$PATH:. 修改仅对当前窗口有效 修改/etc/profile文件,在文件末尾添加export PATH=$PATH:. 修改对所有用户都有效 修改/.bashrc文件,在文件末尾添加export PATH=$PATH:. 修改仅对当前用户有效 表示当前登录用户的主目录 可以用ls al看到隐藏文件.bashrc,相关目录,应用程序 /usr/bin: 系统为正常使用提供的程序,包括用于程序开发的工具 /usr/local/bin:系统管理员为某个特定的主机或本地网络添加的程序 gcc位于/u

3、sr/bin?gccgcc- 4.3 头文件 /usr/include : 常用头文件 /usr/include/sys /usr/include/linux 依赖于特定linux版本的头文件 库文件 标准库文件/lib /usr/lib,库文件,库文件必须遵循特定的命名规范,并且需要在命令行中明确指定 库文件的名称规范 libXXX.a or libXXX.so 以lib开头 XXX指明库的内容,如c代表C语言库,m代表数学库 .a表示静态函数库,.so表示共享函数库,gcc,gcc包含预处理、编译、汇编、链接的过程 gcc -c| -S | -E -std =standard -g -pg

4、 -olevel-Wwarn -pedantic -Idir -Ldir-Dmacro=defn -Umacro -foption -mmachine-option -o outfilefile infile,gcc的主要option,-E: 仅执行预处理,输出的是预处理后的源文件 -c: 不要执行链接,则输出的是汇编后的目标文件 -o outfile: 生成指定的输出文件,如不指定,则通常生成a.out -Idir: 指定额外的头文件搜索路径dir -Ldir: 指定额外的函数库搜索路径dir -llib: 连接时搜索指定的函数库lib,$gcc I/usr/openwin/include

5、fred.c $gcc o fred fred.c /usr/lib/libm.a $gcc o fred fred.c lm $gcc o x11fred L/usr/openwin/lib x11fred.c lX11,创建一个小型函数库,/addvec.c void addvec(int *x, int *y, int *z, int n) int i; for(i = 0;in;i+) zi = xi+yi; ,/multvec.c void multvec(int *x, int *y, int *z, int n) int i; for(i = 0;in;i+) zi = xi*y

6、i; ,/vector.h void addvec(int *x, int *y, int *z, int n); void multvec(int *x, int *y, int *z, int n);,/main.c #include #include “vector.h” int x2=1,2, y2=3,4, z2; int main() addvec(x, y, z, 2); printf(“z = %d, %dn”, z0, z1); return 0; ,include的区别,#include 与 #include “a.h”的不同 #include 首先搜索-I的编译选项目录

7、然后搜索INCLUDE环境变量指定的目录 最后搜索系统内定的搜索目录 /usr/include /usr/local/include 可以用 gcc -print-prog-name=cc1 -v查看 #include “” 首先搜索当前文件的目录下的文件 其次搜索-I的编译选项给出的路径 再搜索INCLUDE环境变量的路径 最后搜索系统内定的搜索目录,生成静态库并采用静态链接,gcc c addvec.c multvec.c 将addvec.c和mulvec.c编译成目标文件addvec.o和multvec.o ar crv libvector.a addvec.o multvec.o ar

8、是打包工具,将两个目标文件打包成一个静态库文件libvector.a gcc -static -o p1 main.c -L. -lvector 采用静态库的方式编译main.c,在当前目录下搜索库文件libvector.a 或者:gcc -c main.c gcc -static -o p1 main.o ./libvector.a ./p1 执行程序,静态编译和链接过程,生成共享库并采用动态链接,gcc -shared -o libvector.so addvec.c multvec.c 将addvec.c, multvec.c编译成共享库libvector.so gcc o p2 mai

9、n.c -L. -lvector 编译main.c,指定目标输出文件是p2, 指定库搜索路径为当前路径(.), 要链接的库为libvector export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/abyssoop/cprogram 如果直接执行./p2,可能会出现运行时无法载入库的错误 首先将LD_LIBRARY_PATH加上libvector.so所在的路径(注意:要将/home/abyssoop/cprogram替换成你们自己的库所在目录 可以使用echo $LD_LIBRARY_PATH查看当前动态链接库搜索路径 ./p2 执行程序,动态链接过程,

10、比较静态链接和动态链接的区别,使用ls l列出p1和p2两个文件的详细信息 比较p1和p2的文件大小,gcc相关的几个环境变量,C_INCLUDE_PATH gcc找头文件的路径 除了默认头文件路径外,其它头文件搜索路径可以通过C_INCLUDE_PATH环境变量指定,也可以在每次使用gcc时通过-I 选项指定 CPLUS_INCLUDE_PATH g+找头文件的路径 LD_LIBRARY_PATH 找动态链接库的路径 LIBRARY_PATH 找静态链接库的路径 除了默认库文件搜索路径外,其它库文件搜索路径可以通过LIBRARY_PATH环境变量指定,也可以每次使用gcc时通过-L选项指定,

11、C+编译,#include using namespace std; int main(void) cout“Hello world”endl; ,$g+ -o hello helloworld.c $./hello Hello World,程序调试工具,gdb,创建小型函数库,/* fred.c */ #include void fred(int arg) printf(“fred: we passed %dn”, arg); /* bill.c * / #include void bill(char *arg) printf(“bill: we passed %sn”, arg); ,$g

12、cc c bill.c fred.c $ls *.o bill.o fred.o,/* lib.h */ void bill(char *); void fred(int); /* program.c */ #include #include “lib.h” int main() bill(“Hello World”); exit(0); ,$gcc c program.c $gcc o program program.o bill.o ./program bill, we passed Hello World $,$ar crv libfoo.a bill.o fred.o a bill.o b fred.o $gcc o program program.o libfoo.a 或者 $gcc o program program.o L. -lfoo,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号