当前位置:  技术问答>linux和unix

makefile中,程序分成两段编译时,出现Undefined symbol 的问题

    来源: 互联网  发布时间:2016-06-05

    本文导语:         有一段程序,其中共有20个源文件,本来20个文件每次编译到一个分区,能够正常工作。    现在,要求把其中5个文件单独拿出来编译到另一个段,即:15个文件编到一个段,5个文件在另一个段,结果出现...

   
   有一段程序,其中共有20个源文件,本来20个文件每次编译到一个分区,能够正常工作。

   现在,要求把其中5个文件单独拿出来编译到另一个段,即:15个文件编到一个段,5个文件在另一个段,结果出现了:

ERROR : Undefined symbol _Recv_From 
ERROR : Undefined symbol _Create_Event_Group
ERROR : Undefined symbol _Allocate_Memory
ERROR : Undefined symbol _Set_Events  ....................................

   本来在makefile中,写成一段时采用如下方式:
project.sun : $(CORE_SRC:.c=.o)  $(USER_C:.c=.o)       --------2部分代码
        $(LD)  -r -X -Tdata 0 -Ttext -$(SEG_OFFSET) 
        $(CORE_SRC:.c=.o) $(USER_C:.c=.o) -o $@

  现在,分成两段,改成如下方式:
core.sun : $(CORE_SRC:.c=.o)                   ---------------1部分
        $(LD)  -r -X -Tdata 0 -Ttext -$(SEG_OFFSET) 
       $(CORE_SRC:.c=.o)   -o $@

user.sun :  $(USER_C:.c=.o)           --------------另一部分
        $(LD)  -r -X -Tdata 0 -Ttext -$(SEG_OFFSET) 
       $(USER_C:.c=.o) -o $@

  究其原因,我觉得,应该是 把USER_C:.c对应的5个源文件 分到另一段后,编译,就链接不到调用的CORE_SRC:.c对应的那些函数了。
    尝试如下解决:
     user.sun :  $(USER_C:.c=.o)  
        $(LD)  -r -X --just-symbols=core.sun -Tdata 0 -Ttext -$(SEG_OFFSET) 
       $(USER_C:.c=.o) -o $@

添加了:--just-symbols=core.sun ,其意义如下:
`-R FILENAME'
`--just-symbols=FILENAME'
    从FILENAME中读取符号名跟它们的值,但不重位这个文件,或者根本不把它包含在输出文件中.这就允许你的输出文件引用其它程序中定义的绝对内存地址.你可以多次使用这个选项.
    为了跟其他ELF连接器兼容,如果'-R'选项后面跟有一个目录名,而不是一个文件名,它会被处理成'-rpath'选项.

结果提示:
/usr/linuxbin/mipsx/ld: unrecognized option `-just-symbols=core.sun '
Usage: /usr/linuxbin/mipsx/ld [-a] [-d] [-dc] [-dp] [-e symbol] [-l lib] [-n]
       [-noinhibit-exec] [-nostdlib] [-o file] [-r] [-s] [-t]
       [-u symbol] [-x] [-y symbol] [-z] [-A file] [-Bstatic] [-D size]
       [-L libdir] [-M] [-N] [-S] [-T[{text,data}] addr] [-V prefix] [-X]
       [file...]

现在不知如何处理了,请指点。。。 多谢。

|
链接目标文件的时候出错?

    
 
 

您可能感兴趣的文章:

  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • linux下面用makefile编译的问题,请高手指点。
  • makefile 的嵌套编译问题
  • 关于多层Makefile编译的问题
  • 寻本详细讲解MAKEFILE和各编译器的书
  • 如何在Makefile中定义宏进行条件编译?
  • 自己编写一个程序编译进内核,要修改makefile文件吗?
  • 用-g编译器选项编译程序就在makefile中按下面样子的加进去吗:
  • 编译条件“-lpthread”应该加在makefile的哪里阿?
  • 急!请问大虾,如何书写UNXI下的MakeFile以编译C(调用了某些库)程序?
  • 帮帮忙啊!关于用makefile编译?
  • 驱动模块可以编入内核,想单独编译成模块,makefile怎么写?
  • 模块编译的小问题,对makefile的理解
  • 如何编写Makefile,使得只编译改变的文件
  • 有关makefile编译出错的一个问题。。。。
  • 如何在编译的时候输出Makefile中的变量值?
  • 请问编译静态链接库的makefile该如何写?
  • 如何写出兼容于BSD MAKE、GNU MAKE、SOLARIS MAKE的条件编译Makefile?
  • makefile中如何把一个子文件夹中的文件一起编译了?
  • Makefile中编译错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个关于undefined conference to <function name>的问题,难道是我Makefile的问题?
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • NOSQL iis7站长之家
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3