Dear Mr.Nagy,
First thanks for your sincere reply but I still have some questions. The reason why I do this test is that I want to build my project on my machine and distribute it to any other Linux (I can't ask other people to compile my project on their machine, that is totally unacceptable). I think full static linking can do this. Since full static linking does not support dlopen I made another test: generate ld.gold that ONLY dynamic links with musl-libc(libc.so) and so does LLVMgold.so. Then I copy them to Ubuntu 16.04 and exec ldd command on both and I found that "libc.musl-x86_64.so.1 => not found" in the output. Finally I exec "./ld.gold --plugin LLVMgold.so" and an error occurred that "could not load plugin library: libc.musl-x86_64.so.1: cannot open shared object file: No such file or directory". I test the basic function of these two files that works well because they can find glibc ld.so on Ubuntu16.04 as ldd shows.
Now I have no idea how to workaround this problem, my question is that whether there is a way that generating some binary executable files in one system and they are portable and compatible on any other Linux distributions (means these binary files can run normally without any problem).