工具/软件:Code Composer Studio
您好!
我一直在尝试交叉编译 CCS v10中的一个简单的 hello world 示例、以便在 OMAP-L138 LCDK 开发板上执行(程序如下所示)
#include
int main (空)
{
printf ("Hello World!\n");
返回0;
}
根据 TI 的文档、我下载并安装了 OMAP-L138 Linux SDK、但我遇到了编译错误和链接器错误、尝试进行分类。
编译错误之一是编译器找不到位于 hello world 程序顶部的文件 stdio.h。
我认为必须引用位于中的目录 stdio.h 作为项目的包含路径。
我向我的项目"/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/usr/include "添加了以下 include 目录、该目录解决了找不到文件的问题(下图也是该文件的图片)。
再次编译工程后、我仍然遇到链接器错误(显示在工程的控制台输出下方)
建筑目标:HelloWorld2.
调用:交叉 GCC 链接器
arm-oE-linux-gnueabi-gcc -o "HelloWorld2" ./HelloWorld2.o
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crt1.o:没有这样的文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crti.o:没有此类文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crtbegin.o:没有这样的文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到-lgcc
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到-lgcc_s
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到-lc
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到-lgcc
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到-lgcc_s
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crtend.o:没有这样的文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crtn.o:没有这样的文件或目录
collect2:错误:LD 返回1退出状态
Makefile:35:目标'HelloWorld2'的配方失败
制造:***[HelloWorld2]错误1.
"make all"以退出代码2终止。 构建可能不完整。
我开始查看文件及其位置、并决定将以下目录添加到链接器包含路径中(下图所示的工程配置):
/home/ben/ti/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/lib
/home/ben/ti/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/usr/lib/arm-oe-linux-gnueabi/8.2.0
这解决了一些问题、但不是所有链接器文件错误。
项目输出现在用于找不到的3个文件的新输出(见下面的输出)
建筑目标:HelloWorld2.
调用:交叉 GCC 链接器
arm-oE-linux-gnueabi-gcc -l/home/be/ti/linux-devkit/sysroots/armv5e-oE-linux-gnueabi/lib -l/ge/be/ti/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/usr/lib/arm-linux-linux-eabi/heldoo-e2.0"
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crt1.o:没有这样的文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crti.o:没有此类文件或目录
/home/ben/ti/linux-devkit/sysroots/x86_64-arago-linux/usr/libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/real-ld:找不到 crtbegin.o:没有这样的文件或目录
collect2:错误:LD 返回1退出状态
Makefile:35:目标'HelloWorld2'的配方失败
制造:***[HelloWorld2]错误1.
"make all"以退出代码2终止。 构建可能不完整。
这些文件出现在我为链接器包含部分添加的目录中、但链接器出于某种原因看不到它们。
经过一些研究、我在 TI 表格上找到了以下帖子:
这个人的问题与我遇到的问题非常相似。 为了查看我是否也有损坏的链接、我运行了他们执行的 cmd 行搜索(对于我的 CPU 和环境路径):
查找/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux -type l | xargs 文件| grep "broken \ symbolic\ link"
该输出指出了一些断开的链路:
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/var/lib/opkg/lists/oe-x86_64-nativesdk: 到/oe/bld/build-ARM9_1/arago-tmp-glibc/work/armv5e-oe-linux-gnueabi/meta-toolchain-arago-tisdk-server/1.0-r5.0/oe-sdk-repo/x86_64-nativesdk/Packages 的符号链接中断
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/var/lib/opkg/lists/oe-all: 到/oe/bld/build-ARM9_1/arago-tmp-glibc/work/armv5e-oe-linux-gnueabi/meta-toolchain-arago-tisdk-server/1.0-r5.0/oe-sdk-repo/all/Packages 的符号链接中断
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/var/lib/opkg/lists/oe-buildtools-dummy-nativesdk: 到/oe/bld/build-ARM9_1/arago-tmp-glibc/work/armv5e-oe-linux-gnueabi/meta-toolchain-arago-tisdk-server/1.0-r5.0/oe-sdk-repo/buildtools-dummy-nativesdk/Packages 的符号链接中断
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/var/lib/opkg/lists/oe: 到/oe/bld/build-ARM9_1/arago-tmp-glibc/work/armv5e-oe-linux-gnueabi/meta-toolchain-arago-tisdk-server/1.0-r5.0/oe-sdk-repo/Packages 的符号链接中断
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/arm-oe-linux-gnueabi/include: 到/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/include 的符号链接中断
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/lib/ssl-1.1/private: 到./../../etc/ssl/private 的符号链接中断
我可以理解的唯一断开的链接(上面列表中的第五个)是链接:
/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/arm-oe-linux-gnueabi/include
我的计算机上不存在该路径、我认为它试图指向 include 文件文件夹、也许是 stdio.h 所在的文件夹。。。。
我运行了以下命令来按照我认为的方式解决链接(这仅是我在前面提到的 TI 表单问题链接中了解到的内容):
RM /home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/arm-oe-linux-gnueabi/include
LN -s /home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/x86_64-arago-linux/usr/arm-oe-linux-gnueabi/include /home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/usr/include
然后、我返回到 CCS 中的 hello world 项目、并删除了我首先提到的 include 文件目录(/home/ben/ti-processor-sdk-linux-omapl138-lcdk-06.03.00.106/linux-devkit/sysroots/armv5e-oe-linux-gnueabi/usr/include)
清理和编译工程后、错误提示编译器找不到文件 stdio.h、但未返回。
我假设我更正的链接是修复 stdio.h 未找到问题的链接。
下面的问题现已提出。
1. OMAP-L138 Linux SDK 的安装文件是否存在问题、或者我安装它的方式是否存在一些链接无法正确解决的问题?
2. TI 是否提供了任何有关链接具有的目标文件夹/功能的文档? (为了在安装后解决这些问题)
找到的其余断开链接是否会导致我看到的链接器错误?
谢谢、
本

