Hi all,
The linking problem I found yesterday appears to be because of the built-in iconv in OS X.
So, this is a request for patch or pointers: What needs to happen with configure.ac or
the iconv.m4 macro file to link an iconv library _besides_ the one in /usr/local/lib?
That's the tl;dr, full explanation follows.
That library lacks the x86_64 architecture:
$ file /usr/local/lib/libiconv.dylib
libiconv.dylib: Mach-O universal binary with 2 architectures
libiconv.dylib (for architecture i386): Mach-O dynamically linked shared library i386
libiconv.dylib (for architecture ppc): Mach-O dynamically linked shared library ppc
Make complains, though it could stand to complain with more violence to the build:
[snip]
Making all in tools
make[3]: Nothing to be done for `all'.
CC libhivex_la-handle.lo
CC libhivex_la-node.lo
CC libhivex_la-offset-list.lo
CC libhivex_la-utf16.lo
CC libhivex_la-util.lo
CC libhivex_la-value.lo
CC libhivex_la-visit.lo
CC libhivex_la-write.lo
CCLD libhivex.la
ld: warning: ld: warning: ignoring file /usr/local/lib/libiconv.dylib, missing
required architecture x86_64 in file /usr/local/lib/libiconv.dylib (2 slices)ignoring file
./hivex.syms, file was built for unsupported file format ( 0x23 0x20 0x68 0x69 0x76 0x65
0x78 0x20 0x67 0x65 0x6E 0x65 0x72 0x61 0x74 0x65 ) which is not the architecture being
linked (x86_64): ./hivex.syms
/opt/local/bin/ranlib: file: .libs/libhivex.a(fd-hook.o) has no symbols
ranlib: file: .libs/libhivex.a(fd-hook.o) has no symbols
Making all in images
[snip]
MacPorts' iconv works fine:
$ file /opt/local/lib/libiconv.dylib
/opt/local/lib/libiconv.dylib: Mach-O 64-bit dynamically linked shared library x86_64
In theory, XCode's does too [1], though I tried that suggestion and it didn't work
for me.
The way to get compilation to work is to remove the iconv library files from
/usr/local/lib [2, 3]. I tried moving them to a temporary folder, and when I did that and
rebuilt, Hivexml ran without a hitch.
So, what would work in configure.ac to get Hivex to remove /usr/local/lib from the library
paths for OS X, but just for iconv?
Or is the correct answer to file a complaint with Apple and commence thumb-twiddling?
--Alex
[1]
http://stackoverflow.com/a/18170376/1207160
[2]
http://stackoverflow.com/a/4929905/1207160
[3]
https://trac.macports.org/ticket/28302