Я довольно новичок в программировании на C ++ и использую pthreads. Я кросс-компилирую свой код для OpenWRT, но по какой-то причине я получаю ошибку сегментации, когда запускаю программу на своей плате, но она отлично работает на моем ПК. Я подозреваю, что ошибка возникает на этапе компоновки компиляции, потому что я пробовал небольшую программу на C, и она работала нормально. Также, если я изменю имя файла на .cpp и скомпилирую его с помощью g ++, это также сработает.
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
void *run(void *dummyPtr) {
printf("I am a thread...\n");
return NULL;
}
int main(int argc, char **argv) {
printf("Main start...\n");
pthread_t connector;
pthread_create(&connector, NULL, run, NULL);
printf("Main end...\n");
return 0;
}
Выходные данные компилятора eclipse:
**** Build of configuration Release for project ThreadTest ****
make all
Building file: ../src/ThreadTest.cpp
Invoking: GCC C++ Compiler
mipsel-linux-g++ -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/ThreadTest.d" -MT"src/ThreadTest.d" -o"src/ThreadTest.o" "../src/ThreadTest.cpp" -lpthread
mipsel-linux-g++: -lpthread: linker input file unused because linking not done
Finished building: ../src/ThreadTest.cpp
Building target: ThreadTest
Invoking: GCC C++ Linker
mipsel-linux-g++ -o"ThreadTest" ./src/ThreadTest.o -lpthread -static
Finished building target: ThreadTest
Редактировать: Удалить старый код и вставить новый более простой пример. Этот код запускается, если я компилирую его как программу на C, но нет, если я компилирую его как программу на C ++. Я использую ядро 2.6.26.3 на плате.