[问题] undefined symbols for architecture

楼主: yin0416 (铅笔)   2017-09-14 16:40:39
开发平台(Platform): (Ex: Win10, Linux, ...)
macOS Sierra 10.12.6
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
在 windows 97 用 gcc 3.4 左右写的吧
我则是用 gcc version 7.1.0 要编译它
问题(Question):
原本用 gcc 指令编译程式时有一个问题
会出现找不到 omp.h 这个文件的讯息,
但后来照着网络上的教学,装了 gcc 7.1.0
这个问题就解决了。
但还又有新的讯息
Undefined symbols for architecture x86_64
"_calculateBend" , reference from:
_ComputeForces in ccBysBIi.o
ld: symbol(s) not found for architecture x86_64
collect2: 错误:ld 回传 1
我上网查了很久,别人也有相同问题,但还是不知道该如何解决。
希望有人能给我指引,谢谢。
作者: shadow0326 (非议)   2017-09-14 17:11:00
旧程式大概是32bit的吧 编译参数加上-m32看看吧不保证你的编译环境支援就是了
楼主: yin0416 (铅笔)   2017-09-14 17:19:00
请问是打 gcc -m32 program.c 吗?还是失败了,谢谢
作者: he103958   2017-09-14 18:00:00
有把档案加进专案里面吗
楼主: yin0416 (铅笔)   2017-09-14 18:34:00
应该是没有,我只是把所有相关程式放在同一个资料夹内,然后用终端机下指令。请问如何放进专案内?有教学网站吗?谢谢
作者: enonrick (EnonRick)   2017-09-15 09:57:00
有用到非原生lib,能把makefile 贴上来吗
楼主: yin0416 (铅笔)   2017-09-15 14:38:00
sorry, 我不懂 makefile,正在上网查中
作者: Lipraxde (Lipraxde)   2017-09-15 14:44:00
你不会是编译的时候一个一个慢慢下指令吧@@
楼主: yin0416 (铅笔)   2017-09-15 15:08:00
所以不是只要编译一个程式就好喔~
作者: Lipraxde (Lipraxde)   2017-09-15 17:27:00
编译参数改变的话,基本上所有档案最好都重新编译,你是不是把之前的.o档跟新编译的混在一起link?
楼主: yin0416 (铅笔)   2017-09-15 22:18:00
所以要删掉 .o 的档案吗?
作者: Lipraxde (Lipraxde)   2017-09-16 12:33:00
不用删吧,重编的时候就会盖过去了,不过我不确定一定可以解决你的问题喔,昨天搞很久都搞不出你这个情况
楼主: yin0416 (铅笔)   2017-09-16 14:33:00
我现在试着一个一个编译,有些成功,有些失败。好像跟编译的顺序也有关。
作者: Lipraxde (Lipraxde)   2017-09-16 14:58:00
你要不要考虑多提供些资讯,譬如说你专案长什么样、新的错误讯息之类的?.o是目的档,你可能需要了解一下编译、连结的流程,或是用xcode之类的IDE。然后如果你用gcc7.1编译出了一堆问题,那不仿换成你之前用的版本相近的gcc看看
楼主: yin0416 (铅笔)   2017-09-17 01:03:00
谢谢你的建议,我对 C 实在是不熟悉,再尝试看看。

Links booklink

Contact Us: admin [ a t ] ucptt.com