为什么这个编译命令序列会不断创建64位文件?

时间:2011-01-27 21:46:05

标签: php gcc makefile compilation mamp

我正在使用mac OSX并尝试从源代码编译二进制文件。

我正在使用的命令是

 /Applications/MAMP/bin/php5.3/bin/phpize CFLAGS='-O2 -arch i386 -arch ppc -g -Os' LDFLAGS='-O2 -arch i386 -arch ppc ' CXXFLAGS='-O2 -arch i386 -arch ppc -g -Os' 
  ./configure --disable-dependancy-tracking --disable-shared -enable-static
  make
  make install

我之前尝试过还包括其他一些标志

-arch x86_64

 --with-php-config="/Applications/MAMP/bin/php5.3/bin/php-config"

但每次检查编译文件时它都会告诉我它是x86_64包。

我错过了什么?

3 个答案:

答案 0 :(得分:2)

尝试在标志中添加-m32。我怀疑优化标志在这里有所作为。

来自gcc手册:

   -m32
   -m64
     

为32位或64位环境生成代码。 32位   环境设置int,long和指向32位的指针并生成代码              在任何i386系统上运行。 64位环境设置   int到              32位和长指针指向64位并生成代码   对于              AMD的x86-64架构。对于darwin,只有-m64选项变为              关闭-fno-pic和-mdynamic-no-pic选项。

答案 1 :(得分:2)

随机猜测,可能不正确。请尝试设置CC

CC="gcc -m32"

编辑:

我的建议的原因是我不知道CFLAGS在您的构建中是否始终受到尊重。

答案 2 :(得分:1)

配置完成后,我编辑了Makefile并更改了以下内容:

CC = cc 至 CC = cc -m32

瞧。