ld: warning libcxa.so.1 may conflict with libcxa.so.3

ld: warning libcxa.so.1 may conflict with libcxa.so.3

mary_monahan的头像

Hi-

We are compiling under Redhat8- glibc 2.2.93-5 and kernel 2.4.18-27.8.0 with the new 7.1 release and Redhat 7.3, glibc 2.2.5-34, kernel 2.4.18-3.

We are getting a warning that libcxa.so.1 may conflict with libcxa.so.3. Apparently DB2 requires libcxa.so.1. So far, the code seems to execute ok. Any insight into potential problems here?

Thanks, Mary Monahan

7 帖子 / 0 new
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项
GaneshRao (Intel)的头像

Mary,
I am trying to find the details on what the possible issue might be. i will let you know when I find out.

Cheers,
Ganesh

David Moore (Intel)的头像

I don't know what issues there may be. I will investigate and report back here, hopefully by the end of the week.

David Moore. (C/C++ Libraries Coordinator)

David Moore (Intel)的头像

Can you give more details of what you did. I tried copying libcxa.so.3 into the same lib as libcxa.so.1 but I did not see the warning. My link still references libcxa.so.1 (as it should have for the 6.0 compiler I was using)

I then tried the opposite experiment and did not see the conflict. I correct accessed the .3 version.

I fiddled around with my libcxa.so file as well, deliberately pointing it at the wrong libcxa.so.n without being able to produce the message.

mary_monahan的头像

Sorry for the delay, we've been upgrading systems.

What I am doing is compiling and linking with IBM DB2. Specifically:
icpc -ldb2 -L/opt/IBM/db2/V8.1/lib -o /dlbuild/cm/opt/IBMicmr/bin/DB2/icmlcacl /dlbuild/cm/obj/DB2/icmpcacl.o
ld: warning: libcxa.so.1, needed by /opt/IBM/db2/V8.1/lib/libdb2.so, may conflict with libcxa.so.3

libcxa.so.1 is shipped with db2 in /opt/IBM/db2/V8.1/lib. I have been told they built their system under RedHat 7.2 using the Intel Compiler. I don't have more details than that about their build process.

David Moore (Intel)的头像

Thanks. Now I understand. The DB2 library was compiled with the 6.0 compiler and you are compiling with 7.x, I think. I guess we would recommend against that but I don't know what may actually go wrong.

I would be as concerned about any changes that will cause problems between the DB2 code and your code as well as differences in libcxa. Is the DB2 code C or C++? If C++ I would be rather surprised if you did not run in to some differences in, for example, how vtables and VTT tables are laid out in the two versions of the compiler. If C the opportunities for incompatibilities are fewer - changes in calling conventions, for example, or in alignment rules, but there may not be any of those.

There is also the question of whether you get two copies of global variables when you load in both libcxa.so.1 and libcxa.so.3.

Are you able to use the 6.0 compiler instead?

mary_monahan的头像

Sorry for the delayed response. I thought I had this append set up to email any updates to me.

No, we have to use V7 since we need to run on linux kernel 2.4.19. We need to support SuSE Enterprise Server V8 and RedHat AS 2.1 updated to kernel 2.4.19. To the best of my knowledge, we need V7 to get there.

We are using C++. I don't know what DB2 is using, but I will ask. We haven't had any errors that clearly map to compiler imcompatibility, but we are still looking through various mystery behaviors.

Can you give me an idea of the types of errors that would be thrown if there was an incompatibility?

Mary Monahan

登陆并发表评论。