【发布时间】:2015-02-24 12:53:15
【问题描述】:
当我在嵌入式 Linux 上执行以下程序时,没有任何反应:
#include <boost/thread/thread.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <iostream>
#include <boost/atomic.hpp>
void Test(void)
{
std::cout << "Hello World" << std::endl;
}
int main(int argc, char* argv[])
{
std::cout << "init";
boost::thread producer_thread(Test);
producer_thread.join();
std::cout << "end";
}
# ./prog -> nothing happens here
strace 输出的最后几行是:
open("/lib/libboost_thread.so.1.55.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240\272\0\0004\0\0\0"..., 512) = 512
lseek(3, 95536, SEEK_SET) = 95536
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1200) = 1200
lseek(3, 95226, SEEK_SET) = 95226
read(3, "A'\0\0\0aeabi\0\1\35\0\0\0\0055T\0\6\3\10\1\t\1\22\4\24\1\25\1"..., 40) = 40
exit_group(1) = ?
+++ exited with 1 +++
#
交叉编译的 libbost_thread 正确安装在 /lib 处。
在调用 main() 之前程序退出。程序在我的Ubuntu下运行正常。
目标:带有 buildroot 的 ARM (sama5d3)
工具链:arm-linux-gnueabihf-
问候
【问题讨论】:
-
哇。这被赞成了? 在程序中是什么?!?我的意思是,您所展示的只是它确实正确加载了 boost_thread 共享库,然后它退出了。你会而不是期待什么?为什么?
-
嗨,程序应该创建一个线程并打印一个“Hello World”。程序在 main() 被调用之前退出。
-
您需要向我们展示如何您做到了。在这一点上,任何人的最佳猜测都是 PEBCAK(见 Select Isn't Broken)
-
嗨,我想现在解释得更好了。最好的问候