2015-12-24 196 views
3

我在Ubuntu 64位機器上使用cryptopp。我需要爲32位編譯庫,但我不知道如何。64位機器上的Crypto ++ 32位編譯

當我調用make時,是否可以在GNU Makefile中進行一些更改或使用可選參數?

+0

什麼Ubuntu版本?它是否已經設置爲多元化? –

回答

4

gccg++有一個強制在32位模式下編譯的特定選項,它是-m32。所以,如果你的應用程序的Makefile文件系統設置正確,你只需要運行編譯如下:

$> CXX='g++ -m32' make 

這應該是足夠的。

+0

快速,準確。奇蹟般有效。謝謝。 – Mendes

5

你可以嘗試使用make CC='gcc -m32' CXX='g++ -m32'來構建它,但你可能需要幾個32位的庫。

您也可以在chroot環境中(使用debootstrap)設置32位分佈並在裏面構建crypto++

1

在調用make時,我應該在GNU Makefile中進行一些更改還是使用可選參數?

大家的答案都應該適合你。要迂腐,以下內容也適用於Crypto ++ 5.6.3及更高版本。它被添加到CXXFLAGS,因爲它的編譯器選項:

export CXXFLAGS="-DNDEBUG -g2 -O2 -m32" 
make static dynamic cryptest.exe 
... 

# Run validation suite 
./cryptest.exe v 

# Run test vectors 
./cryptest.exe tv all 

加密++ 5.6.2用於使用(從5.6.2's GNUMakefile)以下:

1 CXXFLAGS = -DNDEBUG -g -O2 
2 # -O3 fails to link on Cygwin GCC version 4.5.3 
3 # -fPIC is supported. Please report any breakage of -fPIC as a bug. 
4 # CXXFLAGS += -fPIC 
... 
8 ARFLAGS = -cr # ar needs the dash on OpenBSD 
9 RANLIB = ranlib 
... 
25 ifeq ($(CXX),gcc) # for some reason CXX is gcc on cygwin 1.1.4 
26 CXX = g++ 
27 endif 
... 

注意到它無條件地同時設置CXXCXXFLAGS 。這讓我和其他一些用戶困惑不已,所以當魏將圖書館轉到社區時,這是我們改變的第一件事情之一。

Crypto ++ 5.6.3及以上版本改變了這一點。生成文件試圖兌現所有用戶提供了包括CXXCXXFLAGSARARFLAGS等(從5.6.3's GNUMakefile):

1 # Base CXXFLAGS used if the user did not specify them 
2 CXXFLAGS ?= -DNDEBUG -g2 -O2 
... 
14 AR ?= ar 
15 ARFLAGS ?= -cr # ar needs the dash on OpenBSD 
16 RANLIB ?= ranlib 
... 
49 # We honor ARFLAGS, but the "v" often option used by default causes a noisy make 
50 ifeq ($(ARFLAGS),rv) 
51 ARFLAGS = r 
52 endif 
... 

同樣的原則蘋果GNUmakefile-cross如果你正在爲嵌入式進行交叉編譯和移動平臺。

相關問題