NTU-ALComLab / MCC2021

Files to participate in the Model Counting Competition 2021
2 stars 0 forks source link

Compile `abc` without dynamic libraries #3

Closed nianzelee closed 3 years ago

nianzelee commented 3 years ago

The competition organizers ran into the following problem caused by libreadline:

./abc: error while loading shared libraries: libreadline.so.8: cannot open shared object file: No such file or directory

It can be solved by compiling abc without libreadline, or without any dynamic libraries.

@haorenW1025 has already committed the former solution. For the latter, we may need to change the Makefile of abc, to use options suggested by Johannes.

(gcc<4.4 g++ -static otherwise: gcc -static -static-libstdc++ -static-libgcc)

The files on StarExec have not been updated yet.

daajoe commented 3 years ago

Had the same problem with the binary in bin/abc after the update. ldd gives linux-vdso.so.1 (0x00007ffe41dab000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3b2dcf1000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3b2dceb000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3b2db0a000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3b2d9bb000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3b2d9a0000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3b2d7ae000) /lib64/ld-linux-x86-64.so.2 (0x00007f3b2efbf000)

Am I missing something?

nianzelee commented 3 years ago

Do you mean you still encounter:

./abc: error while loading shared libraries: libreadline.so.8: cannot open shared object file: No such file or directory

As shown by ldd, the updated binary does not depend on libreadline now. It is strange if you still got the same error.

daajoe commented 3 years ago

I still have external dependencies. We have only an aged centos on those machines (usually due to infiniband dependencies). So we really need the binary without any dynamically linked libraries. Sorry about that.

nianzelee commented 3 years ago

I still have external dependencies. We have only an aged centos on those machines (usually due to infiniband dependencies). So we really need the binary without any dynamically linked libraries. Sorry about that.

No need to say sorry. We very much appreciate your effort in organizing the competition, and we definitely want to make it easier for you to run our solver. It is just that we have never tried to compile abc without any dynamic libraries before, so it might take some time to figure out how to do it properly. Will get back to you once the problem is fixed.

haorenW1025 commented 3 years ago

The latest commit should fix the issue, now running ldd on my side give

Not a dynamic executable

Feel free to reopen the issue there’s still anything wrong.

nianzelee commented 3 years ago

Not on my laptop.

On commit 682c9e7 I still get the following dynamic dependencies with ldd bin/abc


linux-vdso.so.1 (0x00007ffef31d3000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5eb7428000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5eb7422000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5eb7241000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5eb70f2000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5eb70d7000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5eb6ee5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f5eb86ee000)```
nianzelee commented 3 years ago

Ah, you put the binary at the wrong place. I will move abc to bin/abc.

nianzelee commented 3 years ago

@daajoe Could you please have a look at commit 3fb473c? The updated binary does not have any dynamic dependency. If it works on your side, I will also update the files on StarExec.

@haorenW1025 Thanks for the work. I was about to push the same fix actually. Let's sync next time before we start to work. Otherwise, it is a waste of our time. Let's keep this issue open as a record before Johannes replies.