我有一个简单的源文件'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 说的和第一个例子一样。
那么,我该怎么做才能获得类型为“程序”的可执行文件,该可执行文件可以通过在文件管理器中双击来执行。
(我当然在所有示例中都设置了可执行标志)