鍍金池/ 問(wèn)答/Java  Linux/ cc1: error: unrecognized command line op

cc1: error: unrecognized command line option "-m64"

ubuntu16.04 64位交叉編譯環(huán)境

編譯openssl時(shí),出現(xiàn)錯(cuò)誤圖片描述

問(wèn)題是configure執(zhí)行后生成的Makefile中的CFGLAG
CFLAG= -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -O3 -Wall

去掉-m64就行了

但是,每次編譯都要手動(dòng)去改,有沒(méi)有其他方法?

回答
編輯回答
話寡

openssl 確實(shí)有點(diǎn)小特殊,我也沒(méi)弄過(guò),但是授人以漁,教你方法。
看到開(kāi)源代碼,第一反應(yīng)是在configure中配置,但是下載代碼了發(fā)現(xiàn)沒(méi)有configure,還好我比較聰明,他有config,其實(shí)也有configure,只是Configure,首字母大寫(xiě)。
然后發(fā)現(xiàn)他沒(méi)有配置選項(xiàng),我就 grep -r "-m64" ./ 看是在哪里配置的,結(jié)果發(fā)現(xiàn)在Configure中有大量的的-m64。
再看前面的linux-ppc64,我就明白了,原來(lái)他是根據(jù)目標(biāo)系統(tǒng)預(yù)先設(shè)定好編譯選項(xiàng),那么出現(xiàn)-m64 的原因是識(shí)別錯(cuò)了編譯器。
再反過(guò)來(lái)查找,發(fā)現(xiàn)編譯器的識(shí)別是在config里面做的,識(shí)別完成了,最后幾行的代碼是perl ./Configure $OUT,看明白了吧,要么讓config識(shí)別正確的編譯器,要么干脆根據(jù)你的系統(tǒng)寫(xiě)死$OUT算了。

2017年5月22日 01:38