Angenommen, ich habe drei C-Quelldateien. Die ersten beiden sind LIBs (lib * .a?), Und die dritte ist eine Anwendung, die sie verwendet.Statische Verknüpfung von Bibliotheken in MinGW
Die erste ist (re.c):
int re(int i) {
return i;
}
Die zweite ist (test.c):
int re(int); // Depends on re.c
int test(int i) {
return re(i);
}
und das dritte (main.c):
#include<stdio.h>
int test(int); // Uses test.c
int main(void) {
printf("%d\n",test(0));
return 0;
}
Wie kann ich nun die ersten beiden LIBs so erstellen, dass ich sie später statisch mit der Hauptanwendung verknüpfen kann?
Ich weiß, wie die DLLs erstellen und diese dynamisch in meiner Anwendung verknüpfen, wie:
cc -o re.dll re.c -shared -Wl, - out-implib = libre.a (für re.c)
cc -o test.dll test.c -L. -lre -shared -Wl, - out-implib = libtest.a (für test.c)
cc -o main.exe main.c -L. -lre -ltest
Wie gleichwertig LIBs erstellen statisch in meinem ausführbaren Binärdatei in MinGW verknüpft werden, und wie sie verknüpfen?
Offensichtlich unter Windows :)
Ich verwendete -static, aber es scheint nichts zu tun. Ich habe -mwindows jedoch nicht benutzt. Was ist es? –
-mwindows gibt eine GUI-Anwendung an, -mconsole eine Konsolenanwendung in mingw. Ich frage mich nur, ob diese etwas haben, das hilft. Es verknüpft auch Windows-Bibliotheken mit der Anwendung, wenn diese nicht vorhanden sind. Hast du versucht, dependencywalker zu sehen, welche fehlen? – rotator