我在Ubuntu 64位機器上使用cryptopp
。我需要爲32位編譯庫,但我不知道如何。64位機器上的Crypto ++ 32位編譯
當我調用make
時,是否可以在GNU Makefile中進行一些更改或使用可選參數?
我在Ubuntu 64位機器上使用cryptopp
。我需要爲32位編譯庫,但我不知道如何。64位機器上的Crypto ++ 32位編譯
當我調用make
時,是否可以在GNU Makefile中進行一些更改或使用可選參數?
gcc
和g++
有一個強制在32位模式下編譯的特定選項,它是-m32
。所以,如果你的應用程序的Makefile文件系統設置正確,你只需要運行編譯如下:
$> CXX='g++ -m32' make
這應該是足夠的。
快速,準確。奇蹟般有效。謝謝。 – Mendes
你可以嘗試使用make CC='gcc -m32' CXX='g++ -m32'
來構建它,但你可能需要幾個32位的庫。
您也可以在chroot
環境中(使用debootstrap
)設置32位分佈並在裏面構建crypto++
。
在調用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
...
注意到它無條件地同時設置CXX
和CXXFLAGS
。這讓我和其他一些用戶困惑不已,所以當魏將圖書館轉到社區時,這是我們改變的第一件事情之一。
Crypto ++ 5.6.3及以上版本改變了這一點。生成文件試圖兌現所有用戶提供了包括CXX
,CXXFLAGS
,AR
,ARFLAGS
等(從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
如果你正在爲嵌入式進行交叉編譯和移動平臺。
什麼Ubuntu版本?它是否已經設置爲多元化? –