codec engine中将目标板设为x86构架之后编译的问题

来源:互联网 发布:php aes 解密 编辑:程序博客网 时间:2024/06/04 18:47

omapl138的DVSDK安装与使用(三) 中看到

可以设置目标版的构架所以突发奇想,试试能不能在PC上运行codec engine里的example

今天蛋疼,就在codec engine里将目标设备设为了x86,

DEVICES :=  X86

然后使用app_local模式,

PROGRAMS :=APP_LOCAL

编译了一下例子。


编译codec的时候没有问题。


因为是app_local模式,所以server不用编译。


就在build app端的时候出现了错误,错误如下(很长,删除中间一段。)

/usr/bin/ld: warning: package/cfg/bin/host_platforms_PC/app_local_x86U.xdl contains output sections; did you forget -T?
/home/yr/ti-dvsdk_omapl138-evm_04_03_00_06/codec-engine_2_26_02_11/packages/ti/sdo/ce/osal/linux/lib/release/osal_linux_86U.a86U(Global_noOS.o86U): In function `Global_atexit':
Global_noOS.c:(.text+0x2ce): undefined reference to `atexit'
/home/yr/ti-dvsdk_omapl138-evm_04_03_00_06/codec-engine_2_26_02_11/packages/ti/sdo/ce/osal/linux/lib/release/osal_linux_86U.a86U(Thread_posix.o86U): In function `Thread_stat':
Thread_posix.c:(.text+0x1b5): undefined reference to `pthread_attr_getstacksize'
/home/yr/ti-dvsdk_omapl138-evm_04_03_00_06/codec-engine_2_26_02_11/packages/ti/sdo/ce/osal/linux/lib/release/osal_linux_86U.a86U(Thread_posix.o86U): In function `Thread_self':
………………(删除)
Sem_posix.c:(.text+0x392): undefined reference to `sem_init'
collect2: ld 返回 1
gmake[1]: *** [bin/host_platforms_PC/app_local.x86U] 错误 1
gmake: *** [/home/yr/ti-dvsdk_omapl138-evm_04_03_00_06/codec-engine_2_26_02_11/examples/ti/sdo/ce/examples/apps/video_copy,.executables] 错误 2
make: *** [all] 错误 2

意思是没有找到相应的静态库。


仔细研究video_copy里的package.mak。发现,该加载的静态库都加载了。然后又在网上找解决办法。


终于在反复搜了很多遍之后,发现有人提问出现了跟我一样的问题。刚好有人解答了。(看来学好英文太重要啦!)

我按照上面的方法试了一下。成功了!在我的x86电脑上运行了codec engine里的例子。


现在将解决办法记下来,以免忘记。。。


其实很简单,出问题的原因是和xdctools的版本有关。我的是xdctools_3_16_03_36

网上那个人说貌似在3.21会解决这个问题。。其实对于xdctools的版本我不熟悉,不知道现在最新的是什么版本。

cd /home/yr/ti-dvsdk_omapl138-evm_04_03_00_06/xdctools_3_16_03_36/packages/gnu/targets

打开linkcmd.xdt,注意:更改之前记得备份。

找到var _utils = xdc.loadCapsule("gnu/targets/linkUtils.xs");这一行。

从这一行开始(包括这一行),后面的全部删除。


具体为什么要这么做,我还是不清楚,但是确确实实是解决了我的问题。


搞定之后,用一副图片做了实验。1.jpg是输入2.jpg是输出。app_local.x86U是生成的可执行文件

终端里就是程序执行的过程啦。

原创粉丝点击