компилю файлик такой строкой g++ -g -rdynamic -D_REENTERANT -lpthread prog.cpp на других тачках не запускается. Пишет что проблемы с libstdc++. Ну это понятно. Как от проблемы избавиться? если в строку компиляции дописываю -static, пишет: undefined reference to 'pthread_create' Это вообще возможно - сделать переносимый исполняемый файлик, чтоб на разных сборках, версиях ядра, x32/x64 работало одинаково или это фантастика?
Код (Text): #include <stdio.h> #include <pthread.h> #include <iostream> void * run(void * data) { std::cout << "thread" << std::endl; } int main() { pthread_t thread; pthread_create(&thread, 0, &run, 0); getchar(); return 0; } Код (Text): $ g++ cout.cpp -lpthread $ ldd ./a.out linux-vdso.so.1 => (0x00007ffffc5ff000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa30f270000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fa30ef69000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa30ebc9000) /lib64/ld-linux-x86-64.so.2 (0x00007fa30f49f000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa30e945000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa30e72f000) Код (Text): $ g++ -static cout.cpp -lpthread $ ldd ./a.out not a dynamic executable По поводу 32/64: в один файл запихнуть не получится -- это будут 2 различные сборки.