Кросс-компиляция pthread с помощью mingw для Win в Linux

Я пытаюсь скомпилировать простую потоковую программу для Win в Linux с помощью mingw.

Для этого я загружаю source и поместите исходный код в мой каталог. Затем я написал makefile. Для линукса работает отлично. Но для Win я получил много ошибок - некоторые из них я уже не могу исправить:

$ make
x86_64-w64-mingw32-gcc -Wall -O3 -DPTW32_STATIC_LIB -FORCEWIN   -c -o main.o main.c
x86_64-w64-mingw32-gcc -Wall -O3 -DPTW32_STATIC_LIB -FORCEWIN   -c -o usleep.o usleep.c
------------------------------------------
clean up
make clean 
make[1]: Betrete Verzeichnis '/mnt/prog'
rm -f *.o *.obj *.exe
make[1]: Verlasse Verzeichnis '/mnt/prog'
------------------------------------------
compile pthreads as static lib
cd ./pthreads/; \
    make CROSS=x86_64-w64-mingw32- clean GC-static
make[1]: Betrete Verzeichnis '/mnt/prog/pthreads'
rm -f *~
rm -f *.i
rm -f *.s
rm -f *.o
rm -f *.obj
rm -f *.exe
rm -f pthread.def
make XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS="     " OBJ="pthread.o version.o" libpthreadGC2.stamp
make[2]: Betrete Verzeichnis '/mnt/prog/pthreads'
x86_64-w64-mingw32-gcc -c -o pthread.o -D__CLEANUP_C -O3  -DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB -I. -DHAVE_PTW32_CONFIG_H -Wall  pthread.c
x86_64-w64-mingw32-windres --include-dir=. -D__CLEANUP_C -o version.o -i version.rc
rm -f libpthreadGC2.a
x86_64-w64-mingw32-ar -rv libpthreadGC2.a pthread.o version.o
x86_64-w64-mingw32-ar: Erzeugen von libpthreadGC2.a
a - pthread.o
a - version.o
x86_64-w64-mingw32-ranlib libpthreadGC2.a
echo touched > libpthreadGC2.stamp
make[2]: Verlasse Verzeichnis '/mnt/prog/pthreads'
make[1]: Verlasse Verzeichnis '/mnt/prog/pthreads'
x86_64-w64-mingw32-gcc -c ./main.c ./usleep.c  -Wall -O3 -DPTW32_STATIC_LIB -FORCEWIN 
------------------------------------------
create object files
usleep.o  main.o
------------------------------------------
linking
x86_64-w64-mingw32-gcc ./main.o ./usleep.o ./pthreads/pthread.o  -o possix.exe
./usleep.o:usleep.c:(.text+0x3c): undefined reference to `__imp_select'
./usleep.o:usleep.c:(.text+0x8c): undefined reference to `__imp_select'
/usr/bin/x86_64-w64-mingw32-ld: ./usleep.o: Falsche Verschiebungsadresse 0x0 in Abschnitt `.pdata'
/usr/bin/x86_64-w64-mingw32-ld: final link failed: Ungültiger Vorgang
collect2: ld returned 1 exit status
make: *** [prog] Fehler 1

Как решить проблему со связью?


в Даял Рай

включения моих заголовков (в том порядке, в котором я думаю, что они называются):

main.c

/*#include <errno.h>    */  
/*#include <fcntl.h>    */  
#include <inttypes.h>
#include "./pthreads/pthread.h"
#include <stdio.h>       
#include <stdlib.h> 
#include <string.h>
/*#include <termios.h>  */
/*#include <unistd.h> */

#include "usleep.h"      /* um usleep nutzen zu können */

usleep.h

...
#include "unistd.h"
#include <inttypes.h>
#include <stdio.h>
...

Может быть, неправильно включать unistd.h для цели Windows?


Я дополнительно уменьшаю количество заголовков и меняю их порядок при любой возможности, но ошибка все еще существует. Я не знаю, откуда это....

main.c

#include <inttypes.h>  /* Spezielle int-Datentypen */
#include <stdio.h>

#if defined(FORCEWIN) || defined(_WIN64) || defined(_WIN32)
    #include <time.h>
    #include <winsock2.h>
#elif __unix    /* all unices not caught above */
    #include <sys/time.h>
    #include <sys/socket.h>
#endif

usleep.h


с английской обратной связью

LC_ALL=C make
------------------------------------------
clean up
make clean 
make[1]: Entering directory `/mnt/prog'
rm -f *.o *.obj *.exe
make[1]: Leaving directory `/mnt/prog'
------------------------------------------
compile pthreads as static lib
cd ./pthreads/; \
    make CROSS=x86_64-w64-mingw32- clean GC-static
make[1]: Entering directory `/mnt/prog/pthreads'
rm -f *~
rm -f *.i
rm -f *.s
rm -f *.o
rm -f *.obj
rm -f *.exe
rm -f pthread.def
make XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS=" " OBJ="pthread.o version.o" libpthreadGC2.stamp
make[2]: Entering directory `/mnt/prog/pthreads'
x86_64-w64-mingw32-gcc -c -o pthread.o -D__CLEANUP_C -O3  -DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB -I. -DHAVE_PTW32_CONFIG_H -Wall  pthread.c
x86_64-w64-mingw32-windres --include-dir=. -D__CLEANUP_C -o version.o -i version.rc
rm -f libpthreadGC2.a
x86_64-w64-mingw32-ar -rv libpthreadGC2.a pthread.o version.o
x86_64-w64-mingw32-ar: creating libpthreadGC2.a
a - pthread.o
a - version.o
x86_64-w64-mingw32-ranlib libpthreadGC2.a
echo touched > libpthreadGC2.stamp
make[2]: Leaving directory `/mnt/prog/pthreads'
make[1]: Leaving directory `/mnt/prog/pthreads'
------------------------------------------
create object files
x86_64-w64-mingw32-gcc -c ./main.c ./usleep.c  -Wall -O3 -DPTW32_STATIC_LIB -FORCEWIN 
usleep.o  main.o
------------------------------------------
linking
x86_64-w64-mingw32-gcc ./main.o ./usleep.o ./pthreads/pthread.o  -o possix.exe
./usleep.o:usleep.c:(.text+0x3c): undefined reference to `__imp_select'
./usleep.o:usleep.c:(.text+0x8c): undefined reference to `__imp_select'
/usr/bin/x86_64-w64-mingw32-ld: ./usleep.o: bad reloc address 0x0 in section `.pdata'
/usr/bin/x86_64-w64-mingw32-ld: final link failed: Invalid operation
collect2: ld returned 1 exit status
make: *** [prog] Error 1

Я удалил -DPTW32_STATIC_LIB из CFLAGS, и теперь я получаю это

LC_ALL=C make
------------------------------------------
clean up
make clean 
make[1]: Entering directory `/mnt/prog'
rm -f *.o *.obj *.exe
make[1]: Leaving directory `/mnt/prog'
------------------------------------------
compile pthreads as static lib
cd ./pthreads/; \
    make CROSS=x86_64-w64-mingw32- clean GC-static
make[1]: Entering directory `/mnt/prog/pthreads'
rm -f *~
rm -f *.i
rm -f *.s
rm -f *.o
rm -f *.obj
rm -f *.exe
rm -f pthread.def
make XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS=" " OBJ="pthread.o version.o" libpthreadGC2.stamp
make[2]: Entering directory `/mnt/prog/pthreads'
x86_64-w64-mingw32-gcc -c -o pthread.o -D__CLEANUP_C -O3  -DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB -I. -DHAVE_PTW32_CONFIG_H -Wall  pthread.c
x86_64-w64-mingw32-windres --include-dir=. -D__CLEANUP_C -o version.o -i version.rc
rm -f libpthreadGC2.a
x86_64-w64-mingw32-ar -rv libpthreadGC2.a pthread.o version.o
x86_64-w64-mingw32-ar: creating libpthreadGC2.a
a - pthread.o
a - version.o
x86_64-w64-mingw32-ranlib libpthreadGC2.a
echo touched > libpthreadGC2.stamp
make[2]: Leaving directory `/mnt/prog/pthreads'
make[1]: Leaving directory `/mnt/prog/pthreads'
------------------------------------------
create object files
x86_64-w64-mingw32-gcc -c ./main.c ./usleep.c  -Wall -O3 -FORCEWIN 
usleep.o  main.o
------------------------------------------
linking
x86_64-w64-mingw32-gcc ./main.o ./usleep.o ./pthreads/pthread.o  -o possix.exe -v
Using built-in specs.
COLLECT_GCC=x86_64-w64-mingw32-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-w64-mingw32/4.6/lto-wrapper
Target: x86_64-w64-mingw32
Configured with: ../../src/configure --build=x86_64-linux-gnu --prefix=/usr --includedir='/usr/include' --mandir='/usr/share/man' --infodir='/usr/share/info' --sysconfdir=/etc --localstatedir=/var --libexecdir='/usr/lib/gcc-mingw-w64' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --enable-shared --enable-static --disable-multilib --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --libdir=/usr/lib --enable-libstdcxx-time=yes --with-tune=generic --enable-version-specific-runtime-libs --enable-threads=win32 --enable-fully-dynamic-string --enable-sjlj-exceptions --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-lto --with-plugin-ld --target=x86_64-w64-mingw32 --with-gxx-include-dir=/usr/include/c++/4.6 --with-as=/usr/bin/x86_64-w64-mingw32-as --with-ld=/usr/bin/x86_64-w64-mingw32-ld
Thread model: win32
gcc version 4.6.3 (GCC) 
COMPILER_PATH=/usr/lib/gcc/x86_64-w64-mingw32/4.6/:/usr/lib/gcc/x86_64-w64-mingw32/4.6/:/usr/lib/gcc/x86_64-w64-mingw32/:/usr/lib/gcc/x86_64-w64-mingw32/4.6/:/usr/lib/gcc/x86_64-w64-mingw32/
LIBRARY_PATH=/usr/lib/gcc/x86_64-w64-mingw32/4.6/:/usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/lib/
COLLECT_GCC_OPTIONS='-o' 'possix.exe' '-v' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-w64-mingw32/4.6/collect2 -m i386pep -Bdynamic -o possix.exe /usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/lib/crt2.o /usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/lib/crtbegin.o -L/usr/lib/gcc/x86_64-w64-mingw32/4.6 -L/usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/lib ./main.o ./usleep.o ./pthreads/pthread.o -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_eh -lgcc -lmoldname -lmingwex -lmsvcrt /usr/lib/gcc/x86_64-w64-mingw32/4.6/../../../../x86_64-w64-mingw32/lib/crtend.o
./main.o:main.c:(.text+0x1c): undefined reference to `__imp_pthread_mutex_lock'
./main.o:main.c:(.text+0x23): undefined reference to `__imp_pthread_mutex_unlock'
./main.o:main.c:(.text+0x6b): undefined reference to `__imp_pthread_exit'
./main.o:main.c:(.text+0x8b): undefined reference to `__imp_pthread_mutex_lock'
./main.o:main.c:(.text+0x9e): undefined reference to `__imp_pthread_mutex_unlock'
./main.o:main.c:(.text+0x19c): undefined reference to `__imp_pthread_exit'
/usr/bin/x86_64-w64-mingw32-ld: ./main.o: bad reloc address 0x0 in section `.pdata'
/usr/bin/x86_64-w64-mingw32-ld: final link failed: Invalid operation
collect2: ld returned 1 exit status
make: *** [prog] Error 1

Мне кажется, что ошибка исходит от pthread запутался


Ссылаясь на комментарии Гэвина Смита ниже, я внес некоторые изменения в make-файл:

$ LC_ALL=C make
------------------------------------------
clean up
make clean 
make[1]: Entering directory `/mnt/prog'
rm -f *.o *.obj *.exe
make[1]: Leaving directory `/mnt/prog'
------------------------------------------
compile pthreads as static lib
cd ./pthreads/; \
    make CROSS=x86_64-w64-mingw32- clean GC-static -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for x86_64-pc-linux-gnu
------------------------------------------
create object files
x86_64-w64-mingw32-gcc -c ./main.c ./usleep.c  -Wall -g -O3 -FORCEWIN 
usleep.o  main.o
------------------------------------------
linking
x86_64-w64-mingw32-ld ./main.o ./usleep.o ./pthreads/libpthreadGC2.a  -o possix.exe -v
GNU ld (GNU Binutils) 2.22.90.20120919
./main.o: In function `thr_ausgabe':
/mnt/prog/./main.c:66: undefined reference to `__imp_pthread_mutex_lock'
/mnt/prog/./main.c:66: undefined reference to `__imp_pthread_mutex_unlock'
/mnt/prog/./main.c:72: undefined reference to `printf'
/mnt/prog/./main.c:83: undefined reference to `__imp_pthread_exit'
./main.o: In function `thr_arbeite':
/mnt/prog/./main.c:44: undefined reference to `__imp_pthread_mutex_lock'
/mnt/prog/./main.c:46: undefined reference to `__imp_pthread_mutex_unlock'
/mnt/prog/./main.c:56: undefined reference to `__imp_pthread_exit'
./main.o: In function `main':
/mnt/prog/./main.c:89: undefined reference to `__main'
/mnt/prog/./main.c:100: undefined reference to `__imp_pthread_mutex_init'
/mnt/prog/./main.c:105: undefined reference to `__imp_pthread_create'
/mnt/prog/./main.c:116: undefined reference to `__imp_pthread_join'
/mnt/prog/./main.c:111: undefined reference to `__imp___iob_func'
/mnt/prog/./main.c:111: undefined reference to `fprintf'
/mnt/prog/./main.c:106: undefined reference to `__imp___iob_func'
/mnt/prog/./main.c:106: undefined reference to `fprintf'
./usleep.o: In function `msleep':
/mnt/prog/./usleep.c:16: undefined reference to `__imp_select'
./usleep.o: In function `usleep':
/mnt/prog/./usleep.c:33: undefined reference to `__imp_select'
make: *** [prog] Error 1

Символы главного теперь такие:

$ x86_64-w64-mingw32-nm main.o
0000000000000000 b .bss
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_frame
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_ranges
                 U fprintf
                 U __imp___iob_func
                 U __imp_pthread_create
                 U __imp_pthread_exit
                 U __imp_pthread_join
                 U __imp_pthread_mutex_init
                 U __imp_pthread_mutex_lock
                 U __imp_pthread_mutex_unlock
0000000000000000 T main
                 U __main
                 U msleep
0000000000000000 p .pdata
0000000000000000 p .pdata.startup
                 U printf
0000000000000000 r .rdata
0000000000000000 t .text
0000000000000000 t .text.startup
0000000000000080 T thr_arbeite
0000000000000000 T thr_ausgabe
0000000000000000 r .xdata
0000000000000000 r .xdata.startup

Я тоже искал в объектном файле библиотеки символы, немного отличающиеся от основных:

000000000000a9c0 T pthread_create
000000000000e6a0 T pthread_exit
000000000000b510 T pthread_join
00000000000024b0 T pthread_mutex_init
0000000000006c70 T pthread_mutex_lock
0000000000005800 T pthread_mutex_unlock

может быть полезно удалить или переименовать символы из объектных файлов?


Фактическая ситуация:

Терминал:

$ LC_ALL=C make
------------------------------------------
clean up
make clean 
make[1]: Entering directory `/mnt/prog/win'
rm -f *.o *.obj *.exe
make[1]: Leaving directory `/mnt/prog/win'
------------------------------------------
create object files
x86_64-w64-mingw32-gcc -c ./main.c ./usleep.c  -Wall -O3 -DPTW32_STATIC_LIB -FORCEWIN 
usleep.o  main.o
------------------------------------------
compile pthreads as static lib
cd ./pthreads/; \
    make CROSS=x86_64-w64-mingw32- clean GC-static
make[1]: Entering directory `/mnt/prog/win/pthreads'
rm -f *~
rm -f *.i
rm -f *.s
rm -f *.o
rm -f *.obj
rm -f *.exe
rm -f pthread.def
make XOPT="-DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB" CLEANUP=-D__CLEANUP_C XC_FLAGS=" " OBJ="pthread.o version.o" libpthreadGC2.stamp
make[2]: Entering directory `/mnt/prog/win/pthreads'
x86_64-w64-mingw32-gcc -c -o pthread.o -D__CLEANUP_C -O3  -DPTW32_BUILD_INLINED -DPTW32_STATIC_LIB -I. -DHAVE_PTW32_CONFIG_H -Wall  pthread.c
x86_64-w64-mingw32-windres --include-dir=. -D__CLEANUP_C -o version.o -i version.rc
rm -f libpthreadGC2.a
x86_64-w64-mingw32-ar -rv libpthreadGC2.a pthread.o version.o
x86_64-w64-mingw32-ar: creating libpthreadGC2.a
a - pthread.o
a - version.o
x86_64-w64-mingw32-ranlib libpthreadGC2.a
echo touched > libpthreadGC2.stamp
make[2]: Leaving directory `/mnt/prog/win/pthreads'
make[1]: Leaving directory `/mnt/prog/win/pthreads'
------------------------------------------
linking
x86_64-w64-mingw32-ld ./main.o ./usleep.o ./pthreads/libpthreadGC2.a  -o possix.exe
./main.o:main.c:(.text+0x33): undefined reference to `printf'
./main.o:main.c:(.text.startup+0x6): undefined reference to `__main'
x86_64-w64-mingw32-ld: ./main.o: bad reloc address 0x6 in section `.text.startup'
x86_64-w64-mingw32-ld: final link failed: Invalid operation
make: *** [prog] Error 1

символы объектного файла

$ x86_64-w64-mingw32-nm main.o
0000000000000000 b .bss
0000000000000000 d .data
                 U fprintf
                 U __imp___iob_func
0000000000000000 T main
                 U __main
                 U msleep
0000000000000000 p .pdata
0000000000000000 p .pdata.startup
                 U printf
                 U pthread_create
                 U pthread_exit
                 U pthread_join
                 U pthread_mutex_init
                 U pthread_mutex_lock
                 U pthread_mutex_unlock
0000000000000000 r .rdata
0000000000000000 t .text
0000000000000000 t .text.startup
0000000000000080 T thr_arbeite
0000000000000000 T thr_ausgabe
0000000000000000 r .xdata
0000000000000000 r .xdata.startup

Я действительно не понимаю, почему он не может найти printf и main....

usleep.o

$ x86_64-w64-mingw32-nm usleep.o
0000000000000000 b .bss
0000000000000000 d .data
                 U __imp_select
0000000000000000 T msleep
0000000000000000 p .pdata
0000000000000000 t .text
0000000000000050 T usleep
0000000000000000 r .xdata

person Alex44    schedule 23.09.2013    source источник
comment
В соответствии с правилом gcc If any [static] library A depends on symbols defined in library B, then library A should appear first in the list supplied to the linker. проверьте, нет ли несоответствий в порядке исходного файла и библиотек в вашей команде сборки.   -  person Dayal rai    schedule 23.09.2013
comment
Чтобы сделать ошибки вашего компилятора понятными для людей, не знающих немецкий язык, запустите LC_ALL=C make.   -  person Robert Jørgensgaard Engdahl    schedule 23.09.2013
comment
Спасибо - добавлю   -  person Alex44    schedule 23.09.2013
comment
Я отредактировал свой комментарий с предложением о том, почему он до сих пор не связывается. Вы не должны пытаться переименовывать символы в объектном файле - даже если он ссылается, он, вероятно, не будет работать должным образом.   -  person Gavin Smith    schedule 24.09.2013
comment
Вам следует подумать о winpthreads, поскольку вы используете mingw-w64, что ИМХО более просто (./configure --prefix=/usr --host=x86_64-w64-mingw32 --disable-shared, make, sudo make install). Однако он доступен только через систему контроля версий. Если вам нужна DLL, удалите файл --disable-shared. Я всегда избегаю создания DLL, когда это возможно, потому что 32-битные DLL-файлы и 64-битные DLL-файлы имеют одно и то же имя. Если вы не будете осторожны, вы в конечном итоге все испортите. Хуже того, любая библиотека импорта, на которую вы ссылаетесь, будет зависеть от того, не будет ли переименована библиотека DLL, как вы можете сделать для сосуществования 32-разрядных и 64-разрядных систем.   -  person    schedule 24.09.2013
comment
Похоже, вы связываетесь с кроссом ld, который автоматически не предоставляет никаких необходимых библиотек (таких как libc). Вместо этого используйте крестик gcc.   -  person Gavin Smith    schedule 24.09.2013
comment
gcc - в этом случае компилятор не может читать объектные файлы - несогласованный формат. С помощью cross gcc он дает мне undefined reference to __imp_select'`   -  person Alex44    schedule 24.09.2013
comment
В сообщении об ошибке вы можете увидеть, что gcc als вызывает ld...   -  person Alex44    schedule 24.09.2013


Ответы (2)


Ошибка:

./usleep.o:usleep.c:(.text+0x3c): undefined reference to `__imp_select'

означает, что символ __imp_select не определен. Это может быть в каком-то другом файле C, который вы не включили в свой последний шаг компоновки.

person Robert Jørgensgaard Engdahl    schedule 23.09.2013
comment
Да, я так понимаю, но ничего grep -e __imp_select * мне ничего не дает. - person Alex44; 23.09.2013
comment
stackoverflow .com/questions/6356123/ - person Robert Jørgensgaard Engdahl; 23.09.2013
comment
мне казалось, что это правильное направление. Но я никак не могу это исправить. Что я должен добавить, сделайте флаги компилятора, чтобы он нашел lib. В приведенной выше ссылке предполагалось включить glibc, но ничего не произошло.... - person Alex44; 23.09.2013
comment
Префикс __imp_ связан с искажением символов, поэтому, вероятно, не будет отображаться в исходном коде. - person Gavin Smith; 23.09.2013

Похоже, вы создали файл статической библиотеки libpthreadGC2.a, но ваша команда связывания x86_64-w64-mingw32-gcc ./main.o ./usleep.o ./pthreads/pthread.o -o possix.exe -v связывает только три объектных файла и не входит в их число. Попробуйте добавить -lpthreadGC2 или libpthreadGC2.a к команде связывания.

Если вы хотите проверить, содержит ли объектный файл отсутствующий символ (например, __imp_pthread_mutex_unlock), вы можете попробовать запустить nm libpthreadGC2.a | grep '__imp_pthread_mutex_unlock', чтобы увидеть, есть ли он там.

Я прочитал в README источники pthread, на которые вы ссылались, что вы должны определить PTW32_STATIC_LIB при сборке - есть ли причина, по которой вы удалили параметр -DPTW32_STATIC_LIB?

person Gavin Smith    schedule 23.09.2013
comment
Я не могу определить формат объектных файлов. nm всегда говорил File format not recognized. Кстати. Можно сделать pthread-lib с другими вариантами. Существуют dll с кодом очистки C, встроенная dll с кодом очистки C и встроенная статическая библиотека с кодом очистки C. Должен ли я использовать другой? - person Alex44; 23.09.2013
comment
В режиме отладки я видел там все мои possix-команды как неопределенные ссылки. В руководстве pf pthread было сказано, что я должен использовать CFLAG -pthread, но если я использую это, компилятор не находит библиотеку: x86_64-w64-mingw32-gcc: error: unrecognized option ‘-pthread’ - person Alex44; 23.09.2013
comment
Если я использую x86_64-w64-mingw32-nm main.o вместо nm, можно будет заглянуть в объектные файлы :) Я добавлю этот ответ к вопросу... - person Alex44; 23.09.2013