Linux应用程序开发基础知识-程序运行

本文介绍了Linux应用程序开发中关于程序运行的基础知识,包括编译时头文件的查找、链接时库文件的位置以及运行时库文件的搜索路径。针对编译时找不到头文件、链接时未定义函数和运行时找不到库文件的问题,提出了相应的解决方法,并强调了交叉编译时的库文件管理和环境变量LD_LIBRARY_PATH的重要性。同时,提供了交叉编译程序的通用命令及库文件的放置建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.程序运行基础知识:

1. 编译程序时去哪找头文件?
系统目录:就是交叉编译工具链里的某个 include 目录;
也可以自己指定:编译时用 “ -I dir ” 选项指定。
2. 链接时去哪找库文件?
系统目录:就是交叉编译工具链里的某个 lib 目录;
也可以自己指定:链接时用 “ -L dir ” 选项指定。
3. 运行时去哪找库文件?
系统目录:就是板子上的/lib、 /usr/lib 目录;
也可以自己指定:运行程序用环境变量 LD_LIBRARY_PATH 指定。
4. 运行时不需要头文件,所以头文件不用放到板子上
 

二. 常见错误的解决方法:

1. 头文件问题
编译时找不到头文件。在程序中这样包含头文件: #include <xxx.h>
对于尖括号里的头文件, 去哪里找它?
系统目录:就是交叉编译工具链里的某个 include 目录;
也可以自己指定:编译时用 “ -I dir ” 选项指定。
怎么确定“系统目录”?
执行下面命令确定目录:

echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -

它会列出头文件目录、库目录(LIBRARY_PATH)。
你需要在头文件目录中确定有没有这个文件,或是自己指定头文件目录。
 

2. 库文件问题:

链接程序时如果有这样的提示: undefined reference to `xxx',它表示 xxx 函数未定义。
那么解决方法有 2:
① 去写出这个函数
② 或是使用库函数,那需要在链接时指定库
怎么指定库?想链接 libabc.so,那链接时加上: -labc。
库在哪里?
① 系统目录:就是交叉编译工具链里的某个 lib 目录
② 也可以自己指定:链接时用 “ -L dir ” 选项指定
怎么确定“系统目录”?执

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值