【问题标题】:problems compiling TCC on ubuntu for arm在 ubuntu for arm 上编译 TCC 的问题
【发布时间】:2013-10-11 09:13:44
【问题描述】:

我尝试使用 gcc 4.6.3 为 ARM 编译 tcc。但在共享/静态库模块中编译时出现以下错误:

root@localhost:/p/tcc/tcc# make
gcc -o tcc tcc.o libtcc.so.1.0 -lm -ldl -Wall -g -O2 -fno-strict-aliasing -Wno-pointer-sign -Wno-sign-compare -D_FORTIFY_SOURCE=0  -Wl,-rpath,"/usr/local/lib" libtcc.so.1.0: undefined reference to `vrotb'
collect2: ld returned 1 exit status
make: *** [tcc] Error 1

我正在使用来自 tcc github 的最新分支

【问题讨论】:

  • 哪个存储库?叉子这么多……还有,uname -a是什么?
  • repo : github.com/TinyCC/TinyCC 和 uname -a : Linux localhost 3.0.89-K^Kernel_JB-4.1.2_OC_UV_370MB+ #2 PREEMPT Mon Aug 5 00:42:04 CEST 2013 armv7l armv7l armv7l GNU/Linux
  • 好像没问题。你能运行make clean./configure 然后make 并提供它的完整输出吗?
  • 你在这里:paste.lisp.org/+2ZJW
  • 这个分支中的一些变化似乎破坏了与 arm 的兼容性。在 tccgen.c:945 中删除 'static' 限定符,这应该对您有所帮助。或者试试这个 repo github.com/LuaDist/tcc 不确定哪个更新,但它们肯定不同。

标签: c compilation tcc


【解决方案1】:

刚刚在树莓派(ARMv6 CPU)上检查过。 https://github.com/TinyCC/TinyCC 存储库,从 tccgen.c 中的 vrotb 函数中删除了 static 限定符(第 945 行)。它构建并传递“hello world”。

由于他们忘记适应 ARM 的某些更改可能会引入明显的错误 - 我建议执行进一步的测试以确保它按预期工作。应该提交错误报告 - 可能在 github 上。

【讨论】:

    【解决方案2】:

    我知道这有点令人困惑,但您的问题是您使用了错误的存储库。 Fabrice Bellard 不再在 TinyCC 上工作(请参阅 http://bellard.org/tcc/)。他出于个人/历史原因保留他的存储库。然而,所有的开发都转移到了http://repo.or.cz/w/tinycc.git。更令人困惑的是,Fabrice 网站上的 0.9.26 版本实际上来自 http://repo.or.cz/w/tinycc.git 存储库,而不是 Fabrice 自己的。但这只是沟通问题。简而言之,您应该使用新的存储库。存储库网站上有一个邮件列表链接,如果新的 repo 代码无法编译,您应该报告任何问题。

    【讨论】:

    • 这就是答案。试图修复没有损坏的东西我太愚蠢了.. :-)
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 2016-04-18
    • 2011-08-11
    • 2017-07-05
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多