源编译到'共享库'

时间:2018-03-30 07:07:09

标签: c++ linker-flags thunar

我有一个简单的源文件&source.cpp:

#include <iostream>
using namespace std;

int main() {
    int ival(0);
    cout << "Bitte eine Ganzzahl: ";
    cin >> ival;
    cout << "Sie gaben die Zahl " << ival << " ein\n";
    cout << "Ein Monster mit "
        << "zwei Zeilen\n";
    return 0;
}

现在我用以下内容编译它:

g++ source.cpp -o out

结果在Thunar中显示为Type&#39;共享库&#39;。我可以使用./out在Shell中运行它,但我无法通过双击在Thunar中运行它。

ldd说:

linux-vdso.so.1 (0x00007fffb55be000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fd5d4387000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fd5d403b000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fd5d3e24000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fd5d3a6d000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fd5d4910000)

当我设置-static标志时,我会得到一个典型的程序&#39;它按照预期在Thunar工作,但肯定会更大。 ldd说&#39;该程序没有动态链接&#39;

几年前我编译了这个来源,但我不记得编译器选项,我已经在Typ&#39; Program&#39;中得到了结果。这与静态无关。 ldd和第一个例子说的一样。

那么,我该怎么做才能获得类型为&#39; Program&#39;的可执行文件。这可以通过双击文件管理器来执行。

(我确实在所有示例中都设置了可执行文件标志)

0 个答案:

没有答案