找不到架构x86_64,macOS Sierra

背景:

是的,我知道使用Brew很容易! 已经testing和工作!

现在我正在试验MacOS Sierra ,并安装opendl的httpd-2.4.25.tar.gz

我没有Xcode经验!

$ openssl version OpenSSL 1.1.0c 10 Nov 2016 $ $ which openssl /usr/bin/openssl $ $ cd /etc/ServerWeb/httpd $ sudo ./configure --prefix=/usr/local/ServerWeb/httpd --enable-deflate --enable-so --enable-expires --enable-headers --enable-rewrite --with-apr=/etc/ServerWeb/httpd/srclib/apr --with-apr-util=/etc/ServerWeb/httpd/srclib/apr-util -with-pcre=/etc/pcre --with-z=/usr/include/zlib --enable-ssl --with-ssl=/etc/openssl 

当我执行:

  $ sudo make 

我得到这个错误!

 /etc/ServerWeb/httpd/srclib/apr/build-1/libtool --silent --mode=compile gcc -I/etc/openssl/include -g -O2 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -DDARWIN_10 \ -I. -I/private/etc/httpd-2.4.25/os/unix -I/private/etc/httpd-2.4.25/include -I/etc/ServerWeb/httpd/srclib/apr/include/apr-1 -I/private/etc/apr-util-1.5.4/include -I/usr/local/Cellar/pcre/8.39/include -I/private/etc/httpd-2.4.25/modules/aaa -I/private/etc/httpd-2.4.25/modules/cache -I/private/etc/httpd-2.4.25/modules/core -I/private/etc/httpd-2.4.25/modules/database -I/private/etc/httpd-2.4.25/modules/filters -I/private/etc/httpd-2.4.25/modules/ldap -I/private/etc/httpd-2.4.25/modules/loggers -I/private/etc/httpd-2.4.25/modules/lua -I/private/etc/httpd-2.4.25/modules/proxy -I/private/etc/httpd-2.4.25/modules/session -I/private/etc/httpd-2.4.25/modules/ssl -I/private/etc/httpd-2.4.25/modules/test -I/private/etc/httpd-2.4.25/server -I/private/etc/httpd-2.4.25/modules/arch/unix -I/private/etc/httpd-2.4.25/modules/dav/main -I/private/etc/httpd-2.4.25/modules/generators -I/private/etc/httpd-2.4.25/modules/mappers -prefer-non-pic -static -c ab.c && touch ab.lo ab.c:2398:28: warning: implicit declaration of function 'SSLv2_client_method' is invalid in C99 [-Wimplicit-function-declaration] meth = SSLv2_client_method(); ^ ab.c:2398:26: warning: incompatible integer to pointer conversion assigning to 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') from 'int' [-Wint-conversion] meth = SSLv2_client_method(); ^ ~~~~~~~~~~~~~~~~~~~~~ ab.c:2412:28: warning: 'TLSv1_1_client_method' is deprecated [-Wdeprecated-declarations] meth = TLSv1_1_client_method(); ^ /etc/openssl/include/openssl/ssl.h:1604:45: note: 'TLSv1_1_client_method' has been explicitly marked deprecated here DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) /* TLSv1.1 */ ^ ab.c:2414:28: warning: 'TLSv1_2_client_method' is deprecated [-Wdeprecated-declarations] meth = TLSv1_2_client_method(); ^ /etc/openssl/include/openssl/ssl.h:1610:45: note: 'TLSv1_2_client_method' has been explicitly marked deprecated here DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) /* TLSv1.2 */ ^ ab.c:2417:28: warning: 'TLSv1_client_method' is deprecated [-Wdeprecated-declarations] meth = TLSv1_client_method(); ^ /etc/openssl/include/openssl/ssl.h:1598:45: note: 'TLSv1_client_method' has been explicitly marked deprecated here DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) /* TLSv1.0 */ ^ ab.c:2468:5: warning: implicit declaration of function 'CRYPTO_malloc_init' is invalid in C99 [-Wimplicit-function-declaration] CRYPTO_malloc_init(); ^ 6 warnings generated. /etc/ServerWeb/httpd/srclib/apr/build-1/libtool --silent --mode=link gcc -g -O2 -L/etc/openssl/lib -lssl -lcrypto -lpthread \ -o ab ab.lo /private/etc/apr-util-1.5.4/libaprutil-1.la -lexpat -liconv /etc/ServerWeb/httpd/srclib/apr/lib/libapr-1.la -lpthread Undefined symbols for architecture x86_64: "_CRYPTO_malloc_init", referenced from: _main in ab.o "_SSLv2_client_method", referenced from: _main in ab.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [ab] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive] Error 1 jb-MacBook:httpd jb$ 

根据这个:

编译一些简单的c ++代码时出错

ld:架构x86_64未find符号,clang:linker命令失败

ld:找不到架构x86_64(libusb)的符号

我已经明白了…我需要通过c++或者clang++或者类似的方式来改变gcc

但是,我没有使用xcode应用程序,只有terminal与:

  • sudo ./configure ...
  • sudo make
  • sudo make install

必须在哪里改变呢?

怎么样?

也许我需要编辑一些文件, 哪些文件?

怎么弄出来的?

谢谢!

对于你的情况,编辑或更改文件是没有必要的。

 $ cd /etc/serverWeb/httpd $ sudo ./configure --prefix=/usr/local/serverWeb/httpd --enable-deflate --enable-so --enable-expires --enable-headers --enable-rewrite --with-apr=/etc/serverWeb/httpd/srclib/apr --with-apr-util=/etc/serverWeb/httpd/srclib/apr-util -with-pcre=/etc/pcre --with-z=/usr/include/zlib --enable-ssl --with-ssl=/etc/openssl $ 

要更改编译器,您必须使用标志CC

您的案例示例:

 $ sudo CC=clang ./configure --prefix=/usr/local/serverWeb/httpd --enable-deflate --enable-so --enable-expires --enable-headers --enable-rewrite --with-apr=/etc/serverWeb/httpd/srclib/apr --with-apr-util=/etc/serverWeb/httpd/srclib/apr-util -with-pcre=/etc/pcre --with-z=/usr/include/zlib --enable-ssl --with-ssl=/etc/openssl $ 

CC=gcc ,根据解决方案找到它,你不能使用空格分配值标志。

您好我有一个类似的问题在: httpd(2.4.25),openssl(1.0.2k) – 无法在macOS Sierra编译错误在make:体系结构x86_64未定义的符号:“_CRYPTO_malloc_init”

我在apr-util-1.5.4上安装了正确的版本,并使用openssl启用加密:

 ./configure --prefix=/usr/local/mac-dev-env/apr-util-1.5.4 --with-apr=/usr/local/mac-dev-env/apr-1.5.2 --with-openssl=/usr/local/mac-dev-env/openssl-1.0.2k --with-crypto 

然后配置,Apache构建与:

 ./configure --prefix=/usr/local/mac-dev-env/apache-2.4.25 --enable-so --enable-ssl --with-ssl=/usr/local/mac-dev-env/openssl-1.0.2k --with-apr=/usr/local/apr --with-apr-util=/usr/local/mac-dev-env/apr-util-1.5.4 --with-ldap