
如果我们编写自定义声明文件,例如带有类声明的hello.hpp和带有定义的hello.cpp,我们需要在包含hello.hpp之后使用g main.cpp hello.cpp -o main编译它. main.cpp文件.为什么是这样?
编辑:我们可以模仿我们的自定义头文件和cpp文件的标准模板库的行为,这样我们所要做的就是包含头文件并自动编译声明吗?如果是,那怎么样?如果不是,为什么不呢?
解决方法 标准库正在隐式链接.所以g++ main.cpp -o main
是真的
g++ main.cpp -o main -lstdc++ -lc
其中libstdc是c标准库,libc是c标准库.其他库需要明确链接(例如libm).
如果您将编译和链接步骤分开,这将变得更加清晰:
g++ -c main.cpp -o main.og++ -c other.cpp -o other.og++ main.o other.o /usr/lib/libstdc++.a /usr/lib/libc.a -o main
这里我们将main()函数定义和其他定义(other.cpp)编译成目标文件,并将它们与标准库中现有的编译函数/类/变量定义相结合.
请参阅Shared Library Creation和的TLDP页面
有关如何将定义文件(.c和.cpp)转换为库的详细信息,请参见Static Library Creation.
以上是内存溢出为你收集整理的c – 为什么我们需要在编译期间包含C或CPP声明文件而不是像iostream这样的默认库?全部内容,希望文章能够帮你解决c – 为什么我们需要在编译期间包含C或CPP声明文件而不是像iostream这样的默认库?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)