[問題] make時,會跳過一些incompatible的檔案

看板Linux作者 (資源回收將軍)時間15年前 (2010/06/04 02:34), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
以下是我們助教給的makefile ------------------------------------------- all: Lab5 CXX = g++ OFLAGS = -pedantic -Wall -fomit-frame-pointer -funroll-all-loops -O3 -DNDEBUG LINKFLAGS = -static Lab5: main.o parser.o $(CXX) $(LINKFLAGS) main.o parser.o -o Lab5 -L lib -l3rdFlute2_5 main.o: main.cpp algo.h $(CXX) $(LINKFLAGS) -DCOMPILETIME="\"`date`\"" main.cpp -c parser.o: parser.cpp parser.h $(CXX) $(LINKFLAGS) parser.cpp -c clean: rm -rf *.o *.gch Lab5 ------------------------------------------------------------------ 問題: 這個makefile在實驗室的工作站跑沒有問題 如果在我自己新裝的ubuntu 10.04上跑,會出現以下的錯誤 ( l3rdFlute2_5 第一個字母是L小寫 ) g++ -static main.o parser.o -o Lab5 -L lib -l3rdFlute2_5 /usr/bin/ld: skipping incompatible lib/lib3rdFlute2_5.a when searching for -l3rdFlute2_5 /usr/bin/ld: cannot find -l3rdFlute2_5 collect2: ld return 1 exit status make: *** [Lab5] Error 1 而助教給的資料夾裡面,有一個"lib"資料夾,裡面有兩個檔案 lib3rdFlute2_5.a lib3rdFlute3.a 另外,在碰到這個問題之前,有另一個情況是 在 include <string> 後,strcpy沒辦法compile過 我加了一行 include<string.h> 才沒這個問題,是否我有東西沒安裝齊全= =? 第一次接觸linux,請多指教。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.90.80

06/04 03:19, , 1F
你的系統和lib file可能一個是32-bit另一個是64-bit
06/04 03:19, 1F

06/04 04:01, , 2F
http://bit.ly/9gIWt8 結論應該是裝32-bit lib, CFLAGS加 -m32
06/04 04:01, 2F

06/04 06:59, , 3F
應該是 include cstring, not string
06/04 06:59, 3F

06/04 10:19, , 4F
恩,我再試試,謝謝^^
06/04 10:19, 4F

06/04 20:26, , 5F
確實是64bit的東西= =
06/04 20:26, 5F
文章代碼(AID): #1C1_Mz22 (Linux)