के साथ साझा लाइब्रेरी बनाएं शीर्षक की तरह ही, मैं तीन सीपीपी फ़ाइलों और कुछ स्थैतिक लाइब्रेरी से साझा लाइब्रेरी बनाना चाहता हूं।cpp फ़ाइलों और स्थिर लाइब्रेरी से g ++
मूल रूप से मैं क्या करना चाहते हैं यह
g++ libProject.so file1.cpp file2.cpp file3.cpp -I /usr/local/include -L /usr/local/lib -lAlgatorc
यह मेरा file1.cpp है:
#include <iostream>
#include <TestSetIterator.hpp>
class SortingTestSetIterator : public TestSetIterator {
public:
TestCase *get_current(){
//TODO: implement method
return nullptr;
}
};
यह मेरा file2.cpp
#include<iostream>
#include<TestCase.hpp>
#include<Entity.hpp>
#include<ParameterSet.hpp>
class SortingTestCase : public TestCase {
public:
std::string print() {
//TODO: implement method
return "";
}
};
है और ये मेरे file3 है। सीपीपी
#include <iostream>
#include <AbsAlgorithm.hpp>
#include "SortingTestCase.cpp"
class SortingAbsAlgorithm : public AbsAlgorithm {
private:
SortingTestCase Sorting_test_case;
public:
bool init (TestCase &test) {
//TODO: implement method
return true;
}
void run() {
//TODO: Implement method
}
void done() {
//TODO: Implement method
}
};
मुझे लगता है कि मैं तीन ओ फ़ाइलें (file1.o file2.o file3.o) बना सकते हैं और फिर उन्हें इस
ld -r file1.o file2.o file3.o -o file.o
की तरह गठबंधन जब मैं file.o है मुझे लगता है कि फिर मैं की जरूरत की जरूरत है कि यह कहने के लिए:
g++ -shared -o libProject.so file.o
लेकिन मुझे नहीं पता कि .c फ़ाइलों में .cpp फ़ाइलों को संकलित कैसे करें। मैं जानता हूँ कि मैं इसे इस
g++ -std=gnu++11 -o file1.o -fPIC -c file1.cpp -I /usr/local/include
की तरह कर सकते हैं लेकिन मैं यह भी, इस आदेश को स्थिर पुस्तकालय प्रदान करनी चाहिए क्योंकि file1.cpp (और अन्य फ़ाइलें) वर्ग कि/usr/स्थानीय/शामिल/TestSetIterator में परिभाषित किया गया है विरासत .hpp लेकिन /usr/local/lib/libAlgatorc.a में लागू किया गया है क्योंकि मैं नहीं कह सकता -L/usr/local/lib -lAlgatorc
अंत में, मैं इन तीनों की साझा लाइब्रेरी चाहता हूं कक्षाएं ताकि मुख्य कार्य में मैं इस पुस्तकालय को अपने कार्यक्रम में लोड कर सकूं और मैं इन तीन वर्गों से विधियों को कॉल कर सकता हूं। तो, मैं सभी तीन cpp फ़ाइलें (file1.cpp, file2.cpp और file3.cpp)
मैं Ubuntu 12.04 x64 उपयोग कर रहा हूँ स्थिर पुस्तकालय (libAlgatorc.a) से सभी प्रतीकों के साथ और से शेयर की गई लाइब्रेरी चाहते हैं।
> g++ --version
g++ (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
क्या यह प्रश्न का एक डुप्पी नहीं है जिसे मैंने पहले ही आपको बताया है? http://stackoverflow.com/questions/2649735/how-to-link-static-library-into-dynamic-library-in-gcc –
नहीं। स्थिर लाइब्रेरी और सीपीपी फ़ाइलों से साझा लाइब्रेरी का निर्माण नहीं किया गया है। केवल स्थिर लाइब्रेरी से साझा लाइब्रेरी का निर्माण किया जाता है। मैं यह दोनों संयुक्त चाहता हूँ। – golobich
यह अभी भी मूल रूप से वही है। बस उस उत्तर में '.o' फ़ाइलों को कमांड में जोड़ें। मुद्दा यह है कि दूसरा उत्तर दिखाता है कि एक साझा लाइब्रेरी में एक स्थिर लाइब्रेरी से समाप्त होने वाले सभी प्रतीकों को कैसे सुनिश्चित किया जाए, जो वास्तव में आपकी समस्या है। –