我在网上读到,我应该把我现有的项目(正处于开发阶段)从中构建一个共享库,然后使用这个库进行测试。我打算做的是将我目前的所有工作转移到一个新的共享库eclipse项目中,使用它来进行测试,并继续开发这个新的共享库项目,我将用于测试和开发。但是,当我点击共享库项目的构建时,我看到我在那里编译的更改是否完全,我得到了
调用:交叉G ++链接器
g ++ -shared -o“libMatchingEngineLibrary.so”./ src /Fill.o ./src/GlobalMatchingEngine.o ./src/Main.o ./src/Order.o ./src/OrderBook.o ./src/SingleFifoMatchingEngine .o ./src/SingleMatchingEngine.o
/ usr / bin / ld:./ src / .Fill.o:在创建共享对象时,不能使用针对'vtable for Fill'的重定位R_X86_64_32S;用-fPIC重新编译
./src/Fill.o:无法读取符号:值不好
collect2:ld返回1退出状态
make: * [libMatchingEngineLibrary.so]错误1
为什么我甚至不能构建这个共享库项目,更不用说能够开始测试它了? 我究竟做错了什么?我应该能够建造吗?如果我在这种共享库项目中进行开发(我想做的只是为了方便并行进行测试和开发),这没关系吗?
编辑:错误中提到的Fill类按字母顺序排列为项目中的第一个类。我正在日食上敲击锤子图标。
答案 0 :(得分:0)
这个错误确切地说明了你所缺少的东西。使用-fPIC
标志重新编译。这将允许“位置独立代码”,在尝试创建共享对象库之前,您应该了解它。祝你好运!