[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