0

我有一个简单的源文件'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 中显示为“共享库”类型。我可以使用 ./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 标志时,我得到一个典型的“程序”,它按预期在 Thunar 中工作,但肯定更大。ldd 说“程序没有动态链接”

几年前,我编译了这个源代码,但我不记得编译器选项了,我在 Typ 'Program' 中得到了一个没有静态链接的结果。ldd 说的和第一个例子一样。

那么,我该怎么做才能获得类型为“程序”的可执行文件,该可执行文件可以通过在文件管理器中双击来执行。

(我当然在所有示例中都设置了可执行标志)

4

0 回答 0