ниже я исполняю
D:\Just4Fun\software\>make -f Makefile.hands stest
g++.exe -g -D_WIN32_WINNT=0x0601 -ID:\Boost\boost_1_51_0 -LD:\Boost\boost_1_51_0\stage\lib -LD:\MinGW\lib -lboost_system-mgw46-d-1_51 -lboost_filesystem-mgw46-d-1_51 -lboost_iostreams-mgw46-d-1_51 -lws2_32 -lwsock32 -o TestSerial.exe TestSerial.cpp
ниже результат этого
C:\Users\oleg\AppData\Local\Temp\ccXpC7RG.o: In function 'ZN5boost4asio6detail17winsock_init_base7startupERNS2_4dataEhh':
D:/Boost/boost_1_51_0/boost/asio/detail/impl/winsock_init.ipp:39: undefined reference to 'WSAStartup@8'C:\Users\oleg\AppData\Local\Temp\ccXpC7RG.o: In function 'ZN5boost4asio6detail17winsock_init_base7cleanupERNS2_4dataE':
D:/Boost/boost_1_51_0/boost/asio/detail/impl/winsock_init.ipp:48: undefined reference to 'WSACleanup@0'
collect2: ld returned 1 exit status
make: *** [stest] Error 1
Ниже приведен результат проверки библиотек относительно упомянутых символов (я не смог отформатировать его соответствующим образом)
`d: \ MinGW \ lib> nm -C libws2_32.a | grep WSAStartup
00000000 T WSAStartup @ 8
00000000 я чертенок_WSAStartup @ 8
d: \ MinGW \ lib> nm -C libws2_32.a | grep WSACleanup
00000000 T WSACleanup @ 0
00000000 я чертенок_WSACleanup @ 0
d: \ MinGW \ lib> nm -C libwsock32.a | grep WSACleanup
00000000 T WSACleanup @ 0
00000000 я чертенок_WSACleanup @ 0
d: \ MinGW \ lib> nm -C libwsock32.a | grep WSAStartup
00000000 T WSAStartup @ 8
00000000 я чертенок_WSAStartup @ 8`
Как мы видим, в библиотеках есть символы, и библиотеки находятся на месте, указанном соответствующими параметрами командной строки -L.
Итак, почему «неопределенная ссылка» ????
Это очень распространенная ошибка с очень простым решением: разместите библиотеки, с которыми вы связываетесь после исходные и объектные файлы.
Других решений пока нет …