Giả sử tôi có ba tệp nguồn C. Hai là LIB đầu tiên (lib * .a?) Và thứ ba là một ứng dụng sử dụng chúng.Các thư viện liên kết tĩnh trong MinGW
Đầu tiên là (re.c):
int re(int i) {
return i;
}
Thứ hai là (test.c):
int re(int); // Depends on re.c
int test(int i) {
return re(i);
}
Và thứ ba là (main.c):
#include<stdio.h>
int test(int); // Uses test.c
int main(void) {
printf("%d\n",test(0));
return 0;
}
Bây giờ làm cách nào tôi có thể tạo hai LIB đầu tiên theo cách cho phép tôi liên kết tĩnh chúng sau này với ứng dụng chính?
tôi biết làm thế nào để tạo ra các file DLL và liên kết chúng tự động trong ứng dụng của tôi như:
cc -o re.dll re.c -shared -Wl, - out-implib = libre.a (for re.c)
cc -o test.dll test.c -L. -lre -shared -Wl, - out-implib = libtest.a (đối với test.c)
cc -o main.exe main.c -L. -lre -ltest
Vậy làm thế nào để tạo ra libs tương đương được liên kết tĩnh trong thực thi nhị phân của tôi trong MinGW, và làm thế nào để liên kết chúng?
Rõ ràng, hệ điều hành Windows :)
Tôi đã sử dụng -static, nhưng có vẻ như không sử dụng. Tuy nhiên, tôi đã không sử dụng -mwindows. Nó là gì? –
-mwindows chỉ định một ứng dụng gui, -mconsole một ứng dụng giao diện điều khiển trong mingw. Chỉ cần tự hỏi nếu những điều này có bất cứ điều gì giúp đỡ. Nó cũng liên kết các thư viện cửa sổ với ứng dụng nếu đây là những thư mục bị thiếu. Bạn đã thử dependencywalker để xem cái nào bị thiếu? – rotator