2012-01-31 112 views
0

我重新编译现有的源文件,但它不能创建可执行文件虽然文件中生成具有执行权限编译器不能创建可执行

-rwxrwxr-x 1 ilvweb ilv  2949112 Jan 31 09:34 karny 

$ file karny 
karny: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped 

用于编译

g++ -m64 -mcpu=v9 -DSUNOS -DNDEBUG -g -Wno-deprecated -o karny tkm.o THlm.o Connection.o Socket.o ThLogger.o File.o TextFile.o File.o Timer.o lPlugin.o \ 
      -G -lm 

命令是否有任何选项丢失

如果我们同时使用gcc和g ++以及为g ++编写的源代码以便使用gcc进行重新编译可以像当前那样执行什么操作LY在这种环境下,我们只能使用gcc的

+0

你使用什么编译器和操作系统? 'g ++'不会像你在那里那样使用'-G'。 – Borealid 2012-01-31 04:47:03

+0

它是g ++编译器Solaris 9 9/05 s9s_u8wos_05 SPARC – AKS 2012-01-31 04:56:27

+0

如果您问是否可以使用像gcc这样的C编译器编译C++源代码,答案可能是“否”(除非您的C++代码也是有效的C代码) 。 – jjlin 2012-02-01 21:00:00

回答

1

file,你犯了一个共享对象(通常将被命名为*.so)。

+0

是的,那是我的问题编译选项中是否有任何错误,因为它没有将其视为可执行文件可能是目标文件的顺序? – AKS 2012-01-31 05:01:44

+0

@AKS:你能编译一个简单的hello world类型的程序:“g ++ -o hello hello.cpp”吗?如果是这样,那就试着编译所有选项。然后一次添加一个真实文件。 – 2012-01-31 05:06:35

+0

不是它不工作,因为我们有gcc和g ++,而且我能够使用gcc编译代码源码与g ++兼容,但不兼容gcc我编辑了问题 – AKS 2012-02-01 10:01:19

2

按照GCC manual:系统V

41年3月17日选项

这些附加选项上系统V可用推出4用于与其它编译 兼容性在那些系统:

-G 创建一个共享对象。建议使用-symbolic或-shared来代替。

[...剪断...]

看到,因为你在(SysV的来源)的Solaris,似乎你问GCC创建一个共享对象。有没有具体的原因,你有 - G?

+0

不是它是默认Makefile的一部分,因此开始使用它I发现gcc g ++都可以在这个环境中使用,gcc完美工作,而g ++则不能 – AKS 2012-02-01 09:52:56

相关问题