![](/img/trans.png)
[英]I set the rpath with gcc in MYSYS2 when compiling, but the program can't find it when running, so why?
[英]MYSYS2 mingw64 gcc can't link Shared Libary
冰雹,
我正在嘗試將已編譯的共享庫鏈接到 main,它告訴我它找不到該庫 - 盡管鏈接到不同文件夾中的同名 static 庫沒有問題。 在嘗試鏈接到不在當前目錄中的庫之前,我還可以創建一個共享庫並正確鏈接到它。
也許我編譯錯了,但這是我使用的 make 文件:
Makefile 用於外部庫:
all: objects libalpha.so libalpha.a
objects:
gcc -fPIC -c file1.c file2.c
#shared lib
libalpha.so: objects
gcc -shared -fPIC -Wl,-soname,C:\libs\libc\lib\shared\alpha.so -o C:\libs\libc\shared\libalpha.so file1.o file2.o
#static lib
libalpha.a: objects
ar rcs C:\libs\libc\static\libalpha.a file1.o file2.o
這是 makefile 用於在嘗試鏈接到外部庫之前可以工作的主要/內部庫:
all: libtest libtwo libgroup.so libgroup.a main.o main_static main_shared
libtest: ./sub/libtest.c ./sub/libtest.h
gcc -fPIC -c ./sub/libtest.c -o ./sub/libtest.o
libtwo: ./sub/libtwo.c ./sub/libtwo.h
gcc -fPIC -c ./sub/libtwo.c -o ./sub/libtwo.o
#shared - compiles and links properly
libgroup.so: ./sub/libtest.o ./sub/libtwo.o
gcc -shared -fPIC -Wl,-soname,./sub/libtest.o ./sub/libtwo.o -o ./sub/libgroup.so
#static - compiles and links properly
libgroup.a: ./sub/libtest.o ./sub/libtwo.o
ar rcs ./sub/libgroup.a ./sub/libtest.o ./sub/libtwo.o
#direct where the header files are located
main.o: main.c
gcc -IC:\libs\libc\CODE\alpha -c main.c
#compiles fully and works
main_static: main.o ./sub/libgroup.a
gcc main.o -L./sub -lgroup -LC:\libs\libc\static -lalpha -o main_static
#doesn't work man??
main_shared: main.o ./sub/libgroup.so
gcc main.o -L./sub -lgroup -LC:\libs\libc\shared -lalpha -o main_shared
這是錯誤:
ld.exe: cannot find -lalpha
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:27: main_shared] Error 1
並確認它們存在:
Directory: C:\libs\libc\shared
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/1/2022 4:19 AM 224820 libalpha.so
Directory: C:\libs\libc\static
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/1/2022 4:19 AM 2324 libalpha.a
看到什么明顯的東西了嗎?
感謝您的洞察力。
我看到各種錯誤;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.