[clamav-users] Compiling error: /usr/lib/libxml2.so: error adding symbols: File in wrong format
Alexander Tampermeier
alexander at tampermeier.at
Fri May 9 09:20:17 UTC 2014
Matus,
thank you for your response and for pointing out the arch-independence
of the includes.
"uname -a" gives (I hope that answers your question; if not, please let
me know):
Linux myhost 3.13.0-rc8 #1 SMP Sun Jan 26 14:27:15 CET 2014 x86_64
Intel(R) Core(TM)2 Duo CPU E6850 @ 3.00GHz GenuineIntel GNU/Linux
The system was built according to "Cross-Compiled Linux from scratch",
x86_64 (http://cross-lfs.org/view/svn/x86_64/).
There are "/lib" and "/usr/lib" directories holding the 32bit-libraries
as well as "/lib64" and "/usr/lib64" directories holding the
64bit-libraries. These are no links.
There is a tiny "/usr/bin/multiarch_wrapper" executable as well which
will execute either 32bit or 64bit programs based on the |USE_ARCH|
varia|ble. According to
http://cross-lfs.org/view/svn/x86_64/final-system/multiarch_wrapper.html
t|he multiarch-wrapper is used to wrap certain binaries that have
hardcoded paths to libraries or are architecture specific.
Although I do not understand the specifics I can attest that I have been
using this architecture for several years and never experienced similar
issues. As I understand it: For example, there are three binaries for
"xml2-config" (/usr/bin/xml2-config, /usr/bin/xml2-config-32,
/usr/bin/xml2-config-64), with "/usr/bin/xml2-config" being just a
symlink to "/usr/bin/multiarch_wrapper". So, if "/usr/bin/xml2-config"
is executed, the multiarch-wrapper gets executed and decides to execute
either the 32bit or the 64bit binary depending on the contents of the
environment variable "USE_ARCH=32". If "USE_ARCH" holds "32" then the
32bit executable is run, otherwise the 64bit executable.
Regards
Alexander
Am 09.05.2014 10:25, schrieb Matus UHLAR - fantomas:
> On 08.05.14 22:52, Alexander Tampermeier wrote:
>> So, I got into the same "error adding symbols"-trouble as before with
>> libxml2, now with libltdl. First I thought, that this might be a
>> general issue with my libraries. But then I tried to recompile
>> several packages including php (which also uses libxml2) and
>> everything compiled perfectly. This makes me believe that this issue
>> might not be related to my system only.
>
> Apparently clamav compilation detects wrong system architecture.
> What is the current kernel arch running on, and where do /lib and
> /usr/lib
> point to?
>
>> But what definitely is strange:
>> "xml2-config-32 --libs" and "xml2-config-64 --libs" both bring the
>> same result: "-lxml2 -lz -lm -ldl"
>> "./xml2-config-32 --cflags" and "./xml2-config-64 --cflags" both
>> bring the same result: "-I/usr/include/libxml2"
>
> I don't find this strange. You need the same includes
> (arch-independent) and
> the same libraries (although from different directories).
>
More information about the clamav-users
mailing list