导 航┆主 站┆文 章┆资 料┆下 载┆美 食┆读 书┆笑 话┆博 客┆论 坛
>> Tony嵌入式开发论坛静态版首页
查看完全版本:Tony嵌入式开发论坛

 

    vxWorks映像中加入.0文件问题
    作者:smiletan 时间:2008-3-28 23:40:14

    我现在是用bootrom.bin引导vxWorks,vxWorks映像是由一个bootable工程生成的,这一步是OK的。我在Tornado2.2环境下新建一个downloadble工程,工程中有一个C函数Test(),生成的文件是GPIO.o,现在我想在vxWorks中调用这个函数。但出现的问题是:
    1.在bootable工程中加入宏EXTRA_MOUDLE=D:/VOIP/GPIO.o
    2.重新编译生成vxWorks
    3.启动在Tornado2.2环境shell中直接运行GPIO.o中的函数Test,OK
    4.在调试串口中运行Test,出现错误信息:undefined symbol:Test。
    另外,我直接在bootable工程的C文件usrAppInit.c的函数usrAppInit()中调用GPIO.o中的函数Test,编译时出错:In function 'usrAppiInit()' undefined reference to 'Test'。
    大家请帮帮我吧,谢谢!

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:飞沙孤雁 时间:2008-4-30 23:50:57

    就是你的那个.o文件阿!直接macro里加入就可以了!

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:smiletan 时间:2008-4-29 22:03:13

    以下是引用飞沙孤雁在2008-4-3 21:53:17的发言:

    我说是不是应该是这样子的,

    1:第一再外部库文件里面加入你的那个.o文件;

    2:第二在你那个User函数前面加上一个extern void Test()函数;

    3:重新编译,一切都OK了吧!

    外部库文件是什么文件?文件名是什么?谢谢!

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:laspire 时间:2008-4-27 20:56:01

    在usrAppInit.c先声明再调用

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:不笨 时间:2008-4-26 23:01:39

    你们这是在boot里面加入应用程序么?直接macro里加入就可以了?

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:hbbt 时间:2008-4-3 23:16:51

    [em01]

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:飞沙孤雁 时间:2008-4-3 21:53:17

    我说是不是应该是这样子的,

    1:第一再外部库文件里面加入你的那个.o文件;

    2:第二在你那个User函数前面加上一个extern void Test()函数;

    3:重新编译,一切都OK了吧!

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:tearring 时间:2008-4-2 22:48:55

    undefined symbol:Test。
    LZ是在host shell下输入还是在目标机shell下输入的呢

    要配置同步组件和目标服务器同步应该就不回出现你的问题了

    吧

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------


    作者:MyForever 时间:2008-3-29 11:41:05

    以下是引用smiletan在2008-3-28 23:40:14的发言:

    我现在是用bootrom.bin引导vxWorks,vxWorks映像是由一个bootable工程生成的,这一步是OK的。我在Tornado2.2环境下新建一个downloadble工程,工程中有一个C函数Test(),生成的文件是GPIO.o,现在我想在vxWorks中调用这个函数。但出现的问题是:
    1.在bootable工程中加入宏EXTRA_MOUDLE=D:/VOIP/GPIO.o
    2.重新编译生成vxWorks
    3.启动在Tornado2.2环境shell中直接运行GPIO.o中的函数Test,OK
    4.在调试串口中运行Test,出现错误信息:undefined symbol:Test。
    另外,我直接在bootable工程的C文件usrAppInit.c的函数usrAppInit()中调用GPIO.o中的函数Test,编译时出错:In function 'usrAppiInit()' undefined reference to 'Test'。
    大家请帮帮我吧,谢谢!

    既然你已经:在bootable工程中加入宏EXTRA_MOUDLE=D:/VOIP/GPIO.o

    那么下面的错误是不应该的:编译时出错:In function 'usrAppiInit()' undefined reference to 'Test'。

    是不是写错了函数名??

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------



查看完全版本:Tony嵌入式开发论坛
Copyright 2006-2008 Cevx.Com Cevx.Net 制作 版权所有
网友发帖仅代表个人观点,与本论坛立场无关