我在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版本?它是否已经设置为多元化? –