一.程序运行基础知识:
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 ” 选项指定
怎么确定“系统目录”?执