c++ - -fPIC 的 C++ 链接问题?段故障
问题描述
我正在使用 g++ 编译我的代码
g++ -g -O3 -fPIC -shared -lstdc++ -std=c++0x -I/home/nikesh.joshi/somepath/ main.cpp /home/nikesh.joshi/ml/somepath_apis/somepath/somefile.o
我已经使用 ldconfig 命令包含了 lib。我需要使用 -fPIC 因为最终这个库将与其他静态库链接以形成一个动态库。当我使用以下命令运行此代码时
./a.out
它给出“段错误”。
main.cpp 代码
#include<iostream>
using namespace std;
int main(){
cout<<"Hello";
}
如果我使用 g++ main.cpp 编译此代码,则代码运行成功。我需要用所有库编译这段代码,所以我可以使用这些库的功能。
我在这里发现了同样的问题:为什么包含 -fPIC 来编译静态库会导致运行时出现分段错误?
但这并不能解决我的问题。
解决方案
-shared
生成可以与其他对象链接的共享对象。它不会创建可执行文件。您不能只执行共享对象。要么与其他东西链接以生成可执行文件,要么首先不创建动态库。
推荐阅读
- python - 更改多个文件的文件名
- c - 为什么这个程序在我输入第一个单词时结束并且不循环返回
- ios - 如何以编程方式设置 UITableview 高度以进行滚动?
- .net - 在 PowerShell 中进行 .NET 跟踪,无需创建 .config 文件
- python - 如何计算保形仿射变换?
- java - 项目构建错误:父 POM [unknown-group-id]:[unknown-artifact-id]:[unknown-version] 的打包无效,必须为“pom”但为“jar”
- c++ - 从插件调用时 LoadLibrary() 失败,但在测试程序中工作
- java - 在小米设备的锁定屏幕上显示通知
- javascript - 使用Jquery在名称和成本之间对Json数据进行排序?
- c# - 如何在 C# 中以顺序方式运行 autohotkey 代码?