[問題] 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