使用LLVM在window编译linux的动态库

步骤

普通程序编译点击这里。

编译成.o就参考普通程序的编译,最好加一个-fPIC。

编译动态库依旧使用ld.lld.exe进行链接。

具体示例命令如下:

 ld.lld --sysroot=D:\linux_X86 --build-id --eh-frame-hdr -m elf_i386 
--hash-style=gnu -shared -dynamic-linker D:\linux_X86\lib\ld-linux.so.2  D:\linux_X86\usr\lib\i386-linux-gnu\crti.o 
D:\linux_X86\usr\lib\gcc/i586-linux-gnu\4.9\crtbeginS.o 
-LD:\linux_X86\usr\lib\gcc\i586-linux-gnu\4.9 
-LD:\linux_X86\usr\lib\i386-linux-gnu -LD:\linux_X86\usr\lib 
-LD:\linux_X86\lib\i386-linux-gnu -LD:\linux_X86\lib 
-LD:\linux_X86\usr\lib\i386-linux-gnu -LD:\linux_X86\usr\lib 
-LD:\linux_X86\usr\lib 
hello.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed 
D:\linux_X86\usr\lib\gcc\i586-linux-gnu\4.9\crtendS.o D:\linux_X86\usr\lib\i386-linux-gnu\crtn.o -o hello.so

这里与普通hello程序的不同在于:

1.添加了-shared

2.crtl.o不在使用,且crtbegin.o变为crtbeginS.o,crtend.o变为crtendS.o

 

问题

x86的正常使用,但是arm的动态库我编译出来无法使用。

现象是ldd hello.so:

 not a dynamic executable.

目前还未解决。

你可能感兴趣的:(使用LLVM在window编译linux的动态库)