gpt4 book ai didi

c++ - G++ 将 .hpp 和 .cpp 文件编译为共享库

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:49 25 4
gpt4 key购买 nike

我试图将一个简单的函数编译成共享库对象 (.so)。该函数位于名为 hello.hpp 的文件中:

const char* greet(){
return "hello world";
}

我使用:

g++ -shared -fpic hello.hpp -o hello.so

然后它会创建一个大小为 1.8 MB 的 hello.so 文件。我发现大小不合理,我尝试在不更改其内容的情况下将源文件重命名为 hello.cpp。然后我又编译了一遍:

g++ -shared -fpic hello.cpp -o hello.so

这一次,文件只有 7 KB。为什么 g++ 仅仅因为文件名不同而表现不同?我的平台是 Ubuntu 14.04 和 g++ 4.8.2。

最佳答案

简介

即使您指定输出应具有 .so 作为其扩展名,您也不​​是使用以下命令创建典型的目标文件

g++,从输入文件扩展名来看,将创建一个 precompiled header .

g++ -shared -fpic hello.hpp -o hello.so

阐述

如果你想告诉 g++hello.hpp 当作一个 cpp 文件,你可以这样做将显式类型指定为 -x

g++ -shared -fpic -x c++ hello.hpp -o hello.so

关于c++ - G++ 将 .hpp 和 .cpp 文件编译为共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com