在 Mac OSX Lion 上安装 mod_mono 时遇到问题
还有一个关于在 OSX 上安装 mod_mono 的问题,但我要假设那是在 Lion 出现之前,它为开发人员带来了一些重大变化(例如 python 版本)。
我已按照 mod_mono-2.10 的安装自述文件中的说明进行操作。无济于事。
我所做的正是这样:
tar xvfz mod_mono-2.10.tar.gz
cd mod_mono-X.Y.Z
./configure --prefix=/usr
make
make install
$ apachectl -t
httpd: Syntax error on line 54 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server:
dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
看来 mod_mono 并不是真正的问题。它本身就是单声道的。
smeatonj$ file /usr/bin/mono
/usr/bin/mono: Mach-O executable i386
smeatonj$ file /usr/libexec/apache2/mod_mono.so
/usr/libexec/apache2/mod_mono.so: Mach-O 64-bit bundle x86_64
meatonj$ file /usr/sbin/httpd
/usr/sbin/httpd: Mach-O universal binary with 2 architectures
/usr/sbin/httpd (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/sbin/httpd (for architecture i386): Mach-O executable i386
smeatonj$ file /usr/bin/mono
/usr/bin/mono: Mach-O executable i386
mono 包本身不是为 64 位编译的。也许我应该完全阅读安装指南,但这里是主要内容忧虑:
32 和 64 位支持
此网站上发布的 Mono 软件包提供了 32 位 Mono VM。
仅当您从源代码构建 Mono 并安装您自己的 VM 副本时,才可以从 Mono 2.10 开始支持 64 位 VM。将来我们将为用户提供 mono 和 mono64 二进制文件。
目前 64 位支持有一些限制,这就是我们尚未完全切换到它的原因:
我们的 Windows.Forms 实现使用 Carbon,因此它不适用于 64 位 Mono。 MonoDevelop 使用 Carbon 进行菜单集成,因此它不能在 64 位虚拟机上运行。 MonoMac 绑定尚未移植到 64 位。 全面支持 64 位 Mono 还需要我们提供 64 位 Gtk+ 堆栈,这会增加大多数用户的下载大小。
我尝试在 i386 中重新编译 mod_mono,以便它可以与 mono 运行时一起运行
sudo -s
CFLAGS="-arch i386" ./configure --prefix=/usr
make
make install
smeatonj$ file /usr/libexec/apache2/mod_mono.so
/usr/libexec/apache2/mod_mono.so: Mach-O bundle i386
同样的问题:
$ apachectl -t
httpd: Syntax error on line 54 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server:
dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
我是否能够在 apache 上运行 mod_mono,而无需编译和安装 64 位版本的 mono?我想我可以并行完成,但是整个过程非常非常耗时..我不确定是否要维护官方包,以及仅用于测试网络服务器的不同版本。
以下是 mod_mono 最新重新编译的确切终端输出:
Josh-Mac:mod_mono-2.10 smeatonj$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... i386-apple-darwin11.2.0
checking host system type... i386-apple-darwin11.2.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from gcc object... ok
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fno-common -DPIC
checking if gcc PIC flag -fno-common -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin11.2.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether byte ordering is bigendian... no
checking for pkg-config... /usr/bin/pkg-config
checking for sys/wait.h that is POSIX.1 compatible... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for pid_t... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for ANSI C header files... (cached) yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for memset... yes
checking for mkdir... yes
checking for unsetenv... yes
checking for putenv... yes
checking for setenv... yes
checking for setrlimit... yes
checking for select... yes
checking for strcasecmp... yes
checking for strerror... yes
checking for strrchr... yes
checking for dup2... yes
checking for strndup... yes
checking if debug mode is requested... no
checking What level debug messages should be printed at... debug output disabled
checking whether mod_mono should remove the DISPLAY variable from environment... no
checking if gcov compilation was requested... no
checking if gprof support was requested... no
checking for apxs2 in /usr/local/apache2/sbin... no
checking for apxs in /usr/local/apache2/sbin... no
checking for apxs2 in /usr/local/apache2/bin... no
checking for apxs in /usr/local/apache2/bin... no
checking for apxs2 in /usr/local/apache/sbin... no
checking for apxs in /usr/local/apache/sbin... no
checking for apxs2 in /usr/local/apache/bin... no
checking for apxs in /usr/local/apache/bin... no
checking for apxs2 in /usr/sbin... no
checking for apxs in /usr/sbin... /usr/sbin/apxs
checking for apr-1-config in /usr/sbin... no
checking for apr-config in /usr/sbin... no
checking for apr-1-config in /usr/local/apache2/sbin... no
checking for apr-config in /usr/local/apache2/sbin... no
checking for apr-1-config in /usr/local/apache2/bin... no
checking for apr-config in /usr/local/apache2/bin... no
checking for apr-1-config in /usr/local/apache/sbin... no
checking for apr-config in /usr/local/apache/sbin... no
checking for apr-1-config in /usr/local/apache/bin... no
checking for apr-config in /usr/local/apache/bin... no
checking for apr-1-config in /usr/sbin... no
checking for apr-config in /usr/sbin... no
checking for apr-1-config in /usr/bin... found.
checking for apu-1-config in /usr/sbin... no
checking for apu-config in /usr/sbin... no
checking for apu-1-config in /usr/local/apache2/sbin... no
checking for apu-config in /usr/local/apache2/sbin... no
checking for apu-1-config in /usr/local/apache2/bin... no
checking for apu-config in /usr/local/apache2/bin... no
checking for apu-1-config in /usr/local/apache/sbin... no
checking for apu-config in /usr/local/apache/sbin... no
checking for apu-1-config in /usr/local/apache/bin... no
checking for apu-config in /usr/local/apache/bin... no
checking for apu-1-config in /usr/sbin... no
checking for apu-config in /usr/sbin... no
checking for apu-1-config in /usr/bin... found.
checking Apache version... 2.2
checking for http_protocol.h... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating mod_mono.conf
config.status: creating src/Makefile
config.status: creating man/mod_mono.8
config.status: creating man/Makefile
config.status: creating include/mod_mono_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing quiet commands
./config.status: line 2068: ./scripts/patch-quiet.sh: No such file or directory
config.status: executing quiet-libtool commands
---
Configuration summary for mod_mono
* Installation prefix = /usr/local
* Apache version = 2.2
* Apache modules directory = /usr/libexec/apache2
* apxs = /usr/sbin/apxs
* apr-config = /usr/bin/apr-1-config
* apu-config = /usr/bin/apu-1-config
* CFLAGS = -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1
* Verbose logging (debug) = no
* GCOV options used = no
* Profiling enabled = no
* mono prefix = /Library/Frameworks/Mono.framework/Versions/2.10.8
* Default MonoApplicationsConfigDir = /private/etc/apache2/mod-mono-applications
---
Josh-Mac:mod_mono-2.10 smeatonj$ make
Making all in src
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c -o mod_mono_la-mod_mono.lo `test -f 'mod_mono.c' || echo './'`mod_mono.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c mod_mono.c -fno-common -DPIC -o .libs/mod_mono_la-mod_mono.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c mod_mono.c -o mod_mono_la-mod_mono.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-mod_mono.Tpo .deps/mod_mono_la-mod_mono.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c -o mod_mono_la-mono-io-portability.lo `test -f 'mono-io-portability.c' || echo './'`mono-io-portability.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c mono-io-portability.c -fno-common -DPIC -o .libs/mod_mono_la-mono-io-portability.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c mono-io-portability.c -o mod_mono_la-mono-io-portability.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-mono-io-portability.Tpo .deps/mod_mono_la-mono-io-portability.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c -o mod_mono_la-glib_compat.lo `test -f 'glib_compat.c' || echo './'`glib_compat.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c glib_compat.c -fno-common -DPIC -o .libs/mod_mono_la-glib_compat.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c glib_compat.c -o mod_mono_la-glib_compat.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-glib_compat.Tpo .deps/mod_mono_la-glib_compat.Plo
/bin/sh ../libtool --tag=CC --mode=link gcc -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -module -o mod_mono.la -rpath /usr/local/lib mod_mono_la-mod_mono.lo mod_mono_la-mono-io-portability.lo mod_mono_la-glib_compat.lo
libtool: link: gcc -Wl,-undefined -Wl,dynamic_lookup -o .libs/mod_mono.0.so -bundle .libs/mod_mono_la-mod_mono.o .libs/mod_mono_la-mono-io-portability.o .libs/mod_mono_la-glib_compat.o
libtool: link: dsymutil .libs/mod_mono.0.so || :
libtool: link: (cd ".libs" && rm -f "mod_mono.so" && ln -s "mod_mono.0.so" "mod_mono.so")
libtool: link: ar cru .libs/mod_mono.a mod_mono_la-mod_mono.o mod_mono_la-mono-io-portability.o mod_mono_la-glib_compat.o
libtool: link: ranlib .libs/mod_mono.a
libtool: link: ( cd ".libs" && rm -f "mod_mono.la" && ln -s "../mod_mono.la" "mod_mono.la" )
Making all in man
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all-am'.
Josh-Mac:mod_mono-2.10 smeatonj$ sudo make install
Making install in src
/bin/sh /Users/smeatonj/Development/src/mod_mono-2.10/install-sh -d "/usr/libexec/apache2"
/usr/sbin/apxs -S LIBEXECDIR="/usr/libexec/apache2" -i -n mono mod_mono.la
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' mod_mono.la /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp mod_mono.la /usr/libexec/apache2/
libtool: install: cp .libs/mod_mono.0.so /usr/libexec/apache2/mod_mono.0.so
libtool: install: (cd /usr/libexec/apache2 && { ln -s -f mod_mono.0.so mod_mono.so || { rm -f mod_mono.so && ln -s mod_mono.0.so mod_mono.so; }; })
libtool: install: cp .libs/mod_mono.lai /usr/libexec/apache2/mod_mono.la
libtool: install: cp .libs/mod_mono.a /usr/libexec/apache2/mod_mono.a
libtool: install: chmod 644 /usr/libexec/apache2/mod_mono.a
libtool: install: ranlib /usr/libexec/apache2/mod_mono.a
libtool: install: warning: remember to run `libtool --finish /usr/local/lib'
chmod 755 /usr/libexec/apache2/mod_mono.so
Making install in man
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/share/man/man8" || .././install-sh -c -d "/usr/local/share/man/man8"
/usr/bin/install -c -m 644 './mod_mono.8' '/usr/local/share/man/man8/mod_mono.8'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/private/etc/apache2" || ./install-sh -c -d "/private/etc/apache2"
/usr/bin/install -c -m 644 'mod_mono.conf' '/private/etc/apache2/mod_mono.conf'
Josh-Mac:mod_mono-2.10 smeatonj$
Josh-Mac:apache2 smeatonj$ sudo apachectl -t
httpd: Could not reliably determine the server's fully qualified domain name, using Josh-Mac.local for ServerName
Syntax OK
Josh-Mac:apache2 smeatonj$ sudo apachectl restart
/private/var/log/apache2/error_log 输出:
[2012 年 1 月 13 日星期五 14:28:51] [info] 删除了 PID 文件 /private/var/run/httpd.pid (pid=930)
[2012 年 1 月 13 日星期五 14:28:51] [通知] 捕获 SIGTERM,正在关闭
我还安装了 mod_wsgi (唯一的其他非标准模块),但是我完全禁用了它,但仍然收到 SIGTERM。
控制台中生成错误:
13/01/12 3:22:50.793 PM org.apache.httpd: httpd: Syntax error on line 73 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server: dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
There is another question regarding installing mod_mono on OSX, but I'm going to assume that was before Lion came about, which had some breaking changes for developers (like python versions).
I've followed the instructions in the INSTALL readme of mod_mono-2.10. No Avail.
Exactly what I've done is this:
tar xvfz mod_mono-2.10.tar.gz
cd mod_mono-X.Y.Z
./configure --prefix=/usr
make
make install
$ apachectl -t
httpd: Syntax error on line 54 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server:
dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
It appears that mod_mono wasn't really the problem. It was mono itself.
smeatonj$ file /usr/bin/mono
/usr/bin/mono: Mach-O executable i386
smeatonj$ file /usr/libexec/apache2/mod_mono.so
/usr/libexec/apache2/mod_mono.so: Mach-O 64-bit bundle x86_64
meatonj$ file /usr/sbin/httpd
/usr/sbin/httpd: Mach-O universal binary with 2 architectures
/usr/sbin/httpd (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/sbin/httpd (for architecture i386): Mach-O executable i386
smeatonj$ file /usr/bin/mono
/usr/bin/mono: Mach-O executable i386
The mono package itself is not compiled for 64 bit. Perhaps I should have fully read the install guide but here is the main bit of concern:
32 and 64 bit support
The Mono packages published on this web site provide a 32-bit Mono VM.
Support for 64-bit VMs as of Mono 2.10 is only available if you build Mono from source code and install your own copy of the VM. In the future we will ship both mono and mono64 binaries for our users.
The 64 bit support has a few limitations today which is why we have not entirely switched to it:
Our Windows.Forms implementation uses Carbon, and as such, it would not work with a 64-bit Mono.
MonoDevelop uses Carbon for its menu integration so it would not run on a 64-bit VM.
MonoMac bindings have not been ported to 64 bits.
Supporting 64-bit Mono across the board would also require us to ship a 64-bit Gtk+ stack and that would increase the download size for most users.
I attempted to recompile mod_mono in i386 so that it can run with the mono runtime
sudo -s
CFLAGS="-arch i386" ./configure --prefix=/usr
make
make install
smeatonj$ file /usr/libexec/apache2/mod_mono.so
/usr/libexec/apache2/mod_mono.so: Mach-O bundle i386
Same problem:
$ apachectl -t
httpd: Syntax error on line 54 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server:
dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
Am I going to be able to run mod_mono on apache without compiling and installing a 64 bit version of mono? I guess I could do it side-by-side, but this whole process has been very very time consuming.. I'm not sure about maintaining the official package, and a different version just for a test webserver.
Here is the exact terminal output for the latest recompilation of mod_mono:
Josh-Mac:mod_mono-2.10 smeatonj$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... i386-apple-darwin11.2.0
checking host system type... i386-apple-darwin11.2.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from gcc object... ok
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fno-common -DPIC
checking if gcc PIC flag -fno-common -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin11.2.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking whether byte ordering is bigendian... no
checking for pkg-config... /usr/bin/pkg-config
checking for sys/wait.h that is POSIX.1 compatible... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for pid_t... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for ANSI C header files... (cached) yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking for memset... yes
checking for mkdir... yes
checking for unsetenv... yes
checking for putenv... yes
checking for setenv... yes
checking for setrlimit... yes
checking for select... yes
checking for strcasecmp... yes
checking for strerror... yes
checking for strrchr... yes
checking for dup2... yes
checking for strndup... yes
checking if debug mode is requested... no
checking What level debug messages should be printed at... debug output disabled
checking whether mod_mono should remove the DISPLAY variable from environment... no
checking if gcov compilation was requested... no
checking if gprof support was requested... no
checking for apxs2 in /usr/local/apache2/sbin... no
checking for apxs in /usr/local/apache2/sbin... no
checking for apxs2 in /usr/local/apache2/bin... no
checking for apxs in /usr/local/apache2/bin... no
checking for apxs2 in /usr/local/apache/sbin... no
checking for apxs in /usr/local/apache/sbin... no
checking for apxs2 in /usr/local/apache/bin... no
checking for apxs in /usr/local/apache/bin... no
checking for apxs2 in /usr/sbin... no
checking for apxs in /usr/sbin... /usr/sbin/apxs
checking for apr-1-config in /usr/sbin... no
checking for apr-config in /usr/sbin... no
checking for apr-1-config in /usr/local/apache2/sbin... no
checking for apr-config in /usr/local/apache2/sbin... no
checking for apr-1-config in /usr/local/apache2/bin... no
checking for apr-config in /usr/local/apache2/bin... no
checking for apr-1-config in /usr/local/apache/sbin... no
checking for apr-config in /usr/local/apache/sbin... no
checking for apr-1-config in /usr/local/apache/bin... no
checking for apr-config in /usr/local/apache/bin... no
checking for apr-1-config in /usr/sbin... no
checking for apr-config in /usr/sbin... no
checking for apr-1-config in /usr/bin... found.
checking for apu-1-config in /usr/sbin... no
checking for apu-config in /usr/sbin... no
checking for apu-1-config in /usr/local/apache2/sbin... no
checking for apu-config in /usr/local/apache2/sbin... no
checking for apu-1-config in /usr/local/apache2/bin... no
checking for apu-config in /usr/local/apache2/bin... no
checking for apu-1-config in /usr/local/apache/sbin... no
checking for apu-config in /usr/local/apache/sbin... no
checking for apu-1-config in /usr/local/apache/bin... no
checking for apu-config in /usr/local/apache/bin... no
checking for apu-1-config in /usr/sbin... no
checking for apu-config in /usr/sbin... no
checking for apu-1-config in /usr/bin... found.
checking Apache version... 2.2
checking for http_protocol.h... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating mod_mono.conf
config.status: creating src/Makefile
config.status: creating man/mod_mono.8
config.status: creating man/Makefile
config.status: creating include/mod_mono_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing quiet commands
./config.status: line 2068: ./scripts/patch-quiet.sh: No such file or directory
config.status: executing quiet-libtool commands
---
Configuration summary for mod_mono
* Installation prefix = /usr/local
* Apache version = 2.2
* Apache modules directory = /usr/libexec/apache2
* apxs = /usr/sbin/apxs
* apr-config = /usr/bin/apr-1-config
* apu-config = /usr/bin/apu-1-config
* CFLAGS = -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1
* Verbose logging (debug) = no
* GCOV options used = no
* Profiling enabled = no
* mono prefix = /Library/Frameworks/Mono.framework/Versions/2.10.8
* Default MonoApplicationsConfigDir = /private/etc/apache2/mod-mono-applications
---
Josh-Mac:mod_mono-2.10 smeatonj$ make
Making all in src
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c -o mod_mono_la-mod_mono.lo `test -f 'mod_mono.c' || echo './'`mod_mono.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c mod_mono.c -fno-common -DPIC -o .libs/mod_mono_la-mod_mono.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c mod_mono.c -o mod_mono_la-mod_mono.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-mod_mono.Tpo .deps/mod_mono_la-mod_mono.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c -o mod_mono_la-mono-io-portability.lo `test -f 'mono-io-portability.c' || echo './'`mono-io-portability.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c mono-io-portability.c -fno-common -DPIC -o .libs/mod_mono_la-mono-io-portability.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-mono-io-portability.lo -MD -MP -MF .deps/mod_mono_la-mono-io-portability.Tpo -c mono-io-portability.c -o mod_mono_la-mono-io-portability.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-mono-io-portability.Tpo .deps/mod_mono_la-mono-io-portability.Plo
/bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c -o mod_mono_la-glib_compat.lo `test -f 'glib_compat.c' || echo './'`glib_compat.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c glib_compat.c -fno-common -DPIC -o .libs/mod_mono_la-glib_compat.o
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../include -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apache2 -g -O2 -I/usr/include/apache2 -I/usr/local/include -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/include/apr-1 -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -MT mod_mono_la-glib_compat.lo -MD -MP -MF .deps/mod_mono_la-glib_compat.Tpo -c glib_compat.c -o mod_mono_la-glib_compat.o >/dev/null 2>&1
mv -f .deps/mod_mono_la-glib_compat.Tpo .deps/mod_mono_la-glib_compat.Plo
/bin/sh ../libtool --tag=CC --mode=link gcc -Wall -DDFLT_MONO_CONFIG_DIR=\"/private/etc/apache2/mod-mono-applications\" -g -O2 -I/usr/include/apache2 -I/usr/local/include -I/usr/include/apr-1 -I/usr/include/apr-1 -module -o mod_mono.la -rpath /usr/local/lib mod_mono_la-mod_mono.lo mod_mono_la-mono-io-portability.lo mod_mono_la-glib_compat.lo
libtool: link: gcc -Wl,-undefined -Wl,dynamic_lookup -o .libs/mod_mono.0.so -bundle .libs/mod_mono_la-mod_mono.o .libs/mod_mono_la-mono-io-portability.o .libs/mod_mono_la-glib_compat.o
libtool: link: dsymutil .libs/mod_mono.0.so || :
libtool: link: (cd ".libs" && rm -f "mod_mono.so" && ln -s "mod_mono.0.so" "mod_mono.so")
libtool: link: ar cru .libs/mod_mono.a mod_mono_la-mod_mono.o mod_mono_la-mono-io-portability.o mod_mono_la-glib_compat.o
libtool: link: ranlib .libs/mod_mono.a
libtool: link: ( cd ".libs" && rm -f "mod_mono.la" && ln -s "../mod_mono.la" "mod_mono.la" )
Making all in man
make[1]: Nothing to be done for `all'.
make[1]: Nothing to be done for `all-am'.
Josh-Mac:mod_mono-2.10 smeatonj$ sudo make install
Making install in src
/bin/sh /Users/smeatonj/Development/src/mod_mono-2.10/install-sh -d "/usr/libexec/apache2"
/usr/sbin/apxs -S LIBEXECDIR="/usr/libexec/apache2" -i -n mono mod_mono.la
/usr/share/httpd/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1/build-1/libtool' mod_mono.la /usr/libexec/apache2
/usr/share/apr-1/build-1/libtool --mode=install cp mod_mono.la /usr/libexec/apache2/
libtool: install: cp .libs/mod_mono.0.so /usr/libexec/apache2/mod_mono.0.so
libtool: install: (cd /usr/libexec/apache2 && { ln -s -f mod_mono.0.so mod_mono.so || { rm -f mod_mono.so && ln -s mod_mono.0.so mod_mono.so; }; })
libtool: install: cp .libs/mod_mono.lai /usr/libexec/apache2/mod_mono.la
libtool: install: cp .libs/mod_mono.a /usr/libexec/apache2/mod_mono.a
libtool: install: chmod 644 /usr/libexec/apache2/mod_mono.a
libtool: install: ranlib /usr/libexec/apache2/mod_mono.a
libtool: install: warning: remember to run `libtool --finish /usr/local/lib'
chmod 755 /usr/libexec/apache2/mod_mono.so
Making install in man
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/share/man/man8" || .././install-sh -c -d "/usr/local/share/man/man8"
/usr/bin/install -c -m 644 './mod_mono.8' '/usr/local/share/man/man8/mod_mono.8'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/private/etc/apache2" || ./install-sh -c -d "/private/etc/apache2"
/usr/bin/install -c -m 644 'mod_mono.conf' '/private/etc/apache2/mod_mono.conf'
Josh-Mac:mod_mono-2.10 smeatonj$
Josh-Mac:apache2 smeatonj$ sudo apachectl -t
httpd: Could not reliably determine the server's fully qualified domain name, using Josh-Mac.local for ServerName
Syntax OK
Josh-Mac:apache2 smeatonj$ sudo apachectl restart
/private/var/log/apache2/error_log output:
[Fri Jan 13 14:28:51 2012] [info] removed PID file /private/var/run/httpd.pid (pid=930)
[Fri Jan 13 14:28:51 2012] [notice] caught SIGTERM, shutting down
I also have mod_wsgi installed (the only other non-standard module), but I disabled that entirely, and still get the SIGTERM.
There is an error being generated in Console:
13/01/12 3:22:50.793 PM org.apache.httpd: httpd: Syntax error on line 73 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/mod_mono.conf: Cannot load /usr/libexec/apache2/mod_mono.so into server: dlopen(/usr/libexec/apache2/mod_mono.so, 10): no suitable image found. Did find:\n\t/usr/libexec/apache2/mod_mono.so: mach-o, but wrong architecture
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我在 OSX 10.7、Apache2 上设置 mono/mod_mono 所做的事情 - 希望它可以为其他人节省一些步骤。
请注意,我使用了单独安装的 apache2。您的情况可能会有所不同,但我已经找到了截至 2012 年 7 月在这里和那里汇总的安装片段...通过像我一样配置 mod_mono.conf,我现在有了一个可以运行的 apache2/mono 安装,以及一个 apache2 安装这是 apache.org 的标准。虽然我是一名 Apple 粉丝,但我希望 OSX Apache 安装采用更标准的形式。
(1) 在 OSX 上设置 Apache2 或根据您的喜好使用默认实现。如果您自己构建 httpd 引擎,请参阅下面的评论。
(2) 获取mod_mono源码,并编译如下。
(3) 配置Apache的httpd.conf以包含mod_mono.conf。
(4) 编辑 mod_mono.conf 以满足您的需要。
(5) 重新启动Apache2。
构建 apache2 并将其放置在 /usr/local/apache2 时:
./configure --prefix=/usr/local/apache2 --with-included-apr --enable-mods-shared=all --enable-module=so --enable-authz-host
构建 mod_mono 时在 /usr/local/apache2 中找到 apache2:
./configure --prefix=/usr/local
在 OSX 10.7 上配置 mod_mono 时,假设可以像 macports mono 安装一样通过 /usr/bin 访问 mono:
请注意,httpd.conf 文件包含mod_mono.conf 文件如上所示。
Here is what I did to set up mono/mod_mono on OSX 10.7, Apache2 - hopefully it saves someone else a few steps.
Note that I used a separate install of apache2. Your mileage may vary, but I have found pieces of installs here and there that are aggregated here as of Jul 2012 ... By configuring mod_mono.conf as I have, I now have an apache2/mono install that works, with an apache2 install that is standard from apache.org. While I am an Apple fan boy, I wish the OSX Apache installations were in a little more standard form.
(1) Set up Apache2 on OSX or use the default implementation as per your preference. If you build the httpd engine yourself, see commentary below.
(2) Get mod_mono source, and compile as shown below.
(3) Configure Apache's httpd.conf to include mod_mono.conf.
(4) Edit the mod_mono.conf to fit your needs.
(5) Restart Apache2.
When building apache2 to be placed at /usr/local/apache2:
./configure --prefix=/usr/local/apache2 --with-included-apr --enable-mods-shared=all --enable-module=so --enable-authz-host
When building mod_mono to find apache2 at /usr/local/apache2:
./configure --prefix=/usr/local
When configuring mod_mono on OSX 10.7 assuming that mono is accessible through /usr/bin as with a macports mono install:
Note that the httpd.conf file includes the mod_mono.conf file shown above.
在 Apache 下运行 64 位 mod_mono 不需要 64 位 Mono VM。查看我自己的“文件”命令输出(我使用的是 Lion 10.7.2 和 Apache 2.2.20、Mono 2.10.8 和 mod_mono 2.10):
所以,我的输出与您完全相同,正如您所看到的,您必须使用 64 位 mod_mono 以便在 64 位 Apache 和 32 位 Mono VM 下运行 ASP.NET 页面。
我认为您应该从头开始重试:
MonoFramework-MRE-2.10.8_3.macos10 中的脚本
捆绑包,在uninstallMono.sh
来卸载所有以前版本的 Mono。 xamarin.x86.pkgContents/Resources
目录下将存档内容提取到所需位置并使用以下命令进行编译(如您所见,我没有向命令):
<代码>./配置
制作
sudo make install
确保您的
/etc/apache2/httpd.conf
文件末尾有以下行:Include /private/etc/apache2/ mod_mono.conf
sudo apachectl restart
这应该可以工作!如果不是这种情况,请发布 mod_mono 编译的输出,看看是否发生任何错误。还有您的 httpd.conf 文件:问题可能与另一个与 mod_mono 冲突的 Apache 模块有关。
我建议使用 我自己的版本
mod_mono.conf
文件,因为它启用了 AutoHosting 功能(只需将MonoSetEnv LANG=fr_FR.UTF-8
行替换为您当前的区域性,例如“en-US.UTF-8”或“ja-JP”。 UTF-8”)。祝你好运! :o)
64-bit Mono VM is not required in order to run the 64-bit mod_mono under Apache. See my own "file" command outputs (I'm on Lion 10.7.2 with Apache 2.2.20, Mono 2.10.8 and mod_mono 2.10) :
So, I have exactly the same output as you, and as you can see you must use a 64-bit mod_mono in order to run ASP.NET pages under 64-bit Apache with a 32-bit Mono VM.
I think you should try again from the beginning:
uninstallMono.sh
located in theMonoFramework-MRE-2.10.8_3.macos10.xamarin.x86.pkg
bundle, under the directoryContents/Resources
extract the content of the archive where you want and compile it with the following commands (as you can see I don't provide any argument to the commands):
./configure
make
sudo make install
ensure that you have the following line at the end of your
/etc/apache2/httpd.conf
file :Include /private/etc/apache2/mod_mono.conf
sudo apachectl restart
This should work! If it's not the case, please post the output of mod_mono compilation to see if any error occurred. And also your
httpd.conf
file: the problem may be related to another Apache module that conflicts with mod_mono.I suggest to use my own version of
mod_mono.conf
file, because it enables the AutoHosting feature (just replace theMonoSetEnv LANG=fr_FR.UTF-8
line with your current culture, like "en-US.UTF-8" or "ja-JP.UTF-8").Good luck! :o)