Я новичок в Cygwin, так что надеюсь, кто-нибудь может указать мне правильное направление. Я хотел бы иметь возможность использовать общие библиотеки для компиляции моего кода. Однако до сих пор кажется, что он всегда использует библиотеку stati c, и я не знаю, где именно я сделал ошибку.
Я установил Cygwin на свой компьютер Windows 10. Создал файл: test.c
, который содержит:
#include <stdio.h>
const char msg[] = "Hello, world.";
int main(void){
puts (msg);
return 0;
}
Затем я скомпилировал его с помощью: $ gcc -Wall -c test.c -o test.o
Затем я проверил символы, используя: $ nm test.o
Это дает мне то, что я ожидал:
U __main
0000000000000000 T main
0000000000000000 R msg
U puts
где ни одному из символов еще не назначены адреса. Все в порядке.
Затем я связал его следующим образом: $ gcc -Wall test.o –o test
Затем проверил символы, как показано ниже: $ nm test
Я получил следующее:
0000000100401080 T main
0000000100401000 T mainCRTStartup
0000000100401640 T malloc
0000000100403000 R msg
0000000100401650 T posix_memalign
00000001004010d0 T puts
в то время как я ожидал, что символ puts
будет чем-то вроде U put @@ GLIBC_x.xx`.
Похоже, у меня не было общих библиотек, или я ' m неправильно использует процесс. Что не так? Спасибо.