- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux下程序编辑编译链接实验.
cp arm-linux-gcc-3.3.2.tar.bz2 /
tar jxvf arm-linux-gcc-3.3.2.tar.bz2
安装后的交叉开发环境位于/usr/local/arm/3.3.2/目录下
执行如下命令,把arm-linux-gcc等工具的路径添加到PATH环境变量中: export PATH=/usr/local/arm/3.3.2/bin:$PATH
1.2.4 交叉开发工具链的认识
交叉开发工具链安装后位于xxx目录下,相应文件和目录的功能描述如下:1.2.5 交叉开发工具链的使用
首先会到/home/mike目录,建立test目录:
mkdir test (2) arm-linux-gcc的使用
1. 编译C文件,生成elf可执行文件
利用vi建立h1.c 、h2.c、hello.c源文件,内容分别如下:
//h1.c源文件
#include void hellofirst(void)
{
printf(The first hello! \n);
}
//h2.c 源文件
#include
void hellosecond(void)
{
printf(The second hello! \n);
}
//hello.c 源文件
#include
void hellosecond(void);
void hellofirst(void);
int main(int argc, char *argv[])
{
hellofirst();
hellosecond();
return(0);
}
编译以上3个文件,有如下几种方法:
方法1:
[arm@localhost gcc]# arm-linux-gcc -c h1.c
[arm@localhost gcc]# arm-linux-gcc -c h2.c
[arm@localhost gcc]# arm-linux-gcc -o hello hello.c h1.o h2.o
方法2:
[arm@localhost gcc]# arm-linux-gcc -c h1.c h2.c
[arm@localhost gcc]# arm-linux-gcc -o hello hello.c h1.o h2.o
方法3:
[arm@localhost gcc]# arm-linux-gcc -o hello hello.c h1.c h2.c (3) arm-linux-ar 和 arm-linux-ranlib的使用 –r libhello.a h1.o h2.o
为静态库建立索引
ranlib libhello.a
由静态库产生可执行文件
gcc –o hello hello.c libhello.a
用动态库编译
1、生成需要的动态库
gcc -shared -o libhello.so h1.o h2.o
2、将得到的动态库libhello.so放到/usr/local/lib/hello目录下
cp libhello.so /usr/local/lib/hello
3、修改环境变量LD_LIBRARY_PATH
首先修改文件/etc/ld.so.conf,添加一行内容/usr/local/lib/hello
接着执行/sbin/ldconfig文件
到此把我们自定义的动态库路径添加到了系统环境变量。
4、gcc –o libsohello hello.c –L/usr/local/lib/hello -lhello
(4) arm-linux-strip的使用
main函数是C的入口函数,函数原型为
Int main(int argc,char *argv[ ],char *envp[ ] );
其中argche argv用来传入命令行参数,envp用来传入环境变量。
Argc表示命令行参数的个数,而argv参数指向一个字符串数组,其中每一个字符串是一个命令行参数,同时,argv最后一个元素是NULL,表示数组的结束。需要注意的是shell认为命令中用空格隔开的各个部分都是参数,包括可执行的文件名本身。例如:
./test –n 3.4
它传入main函数的argc参数是3,而argv参数在内存中的布局如图示所示:
#include stdio.h
void hellosecond(void);
void hellofirst(void);
int main(int argc, char *argv[],char *envp[])
{int i;
for(i=0;iargc;i++)
printf(para %d: %s
文档评论(0)