【问题标题】:pthreads compile but binary is not createdpthreads 编译但未创建二进制文件
【发布时间】:2009-06-01 19:01:23
【问题描述】:

我正在尝试编译一个我用 C++ 编写的程序,用于使用 pthread 的赋值。我在 Linux 中使用 Eclipse,在将“-lpthread”添加到编译器参数(到 g++、gcc 和链接器)之后,我没有任何编译问题。但是,当我要运行和调试时,Eclipse 给了我一个错误消息窗口“启动失败。找不到二进制文件。”

我尝试用gcc和g++手动编译,后缀为-pthread和-lpthread,结果类似——“gcc:-pthread: No such file or directory”。

不知道哪里错了,因为它编译没有问题,只是不产生一个exe。 我相信我可能需要 apt-get 一些东西。

我应该做什么?

【问题讨论】:

    标签: c++ linux gcc compilation pthreads


    【解决方案1】:

    你是如何编译的?这应该可以正常工作:

    gcc -o foo foo.c -lpthread

    【讨论】:

    • gcc –pthread ./*.cpp -o Ex2.exe g++ –pthread ./*.cpp -o Ex2.exe gcc –lpthread ./*.cpp -o Ex2.exe g++ –lpthread ./*.cpp -o Ex2.exe 不工作。
    • @Nefzen - 不要在 pthread 之前使用两个破折号,它只是一个破折号。
    • 只需要一个pthread语句,最后加上-lpthread就够了。
    • 好的,我只在 Eclipse 中将 -lpthread 添加到了链接器中,现在它可以工作了。欢呼。现在调试愉快。
    【解决方案2】:

    g++ -pthread -ggdb -Wall -pedantic -o myexe *.cpp -lpthread 应该可以工作。

    【讨论】:

    • 现在它给了我一个“对 `void* Run(void*)' 的未定义引用”错误,虽然在 Eclipse 中仍然没有错误,但它仍然不会产生二进制文件。
    • 这意味着链接器找不到 Run() 函数的模板扩展。
    • 是的,我把模板移到了页眉,之前应该把它捡起来的。它正在运行,但我遇到了一个它没有捕获的异常,可能在另一个线程中:\
    • 未捕获的异常将终止程序。如果你得到一个“核心”文件 - 用“gdb prog core-file”将它加载到调试器中,看看它在哪里被提升。以下 gdb 命令在调试线程应用程序时非常有用:“info threads”、“thread apply all bt”、“thread ”。
    猜你喜欢
    • 1970-01-01
    • 2017-08-04
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多