Wie kann ich einen link zu cppunit?
Ich glaube, ich bin fehlt etwas wirklich dummes hier.
Habe ich libcppunit installiert: (ich bin mit Ubuntu 12.04)
$ apt-cache policy libcppunit-dev
libcppunit-dev:
Installed: 1.12.1-4
Candidate: 1.12.1-4
Version table:
*** 1.12.1-4 0
500 http://archive.ubuntu.com/ubuntu/precise/main amd64 Packages
100 /var/lib/dpkg/status
$ apt-cache policy libcppunit-1.12-1
libcppunit-1.12-1:
Installed: 1.12.1-4
Candidate: 1.12.1-4
Version table:
*** 1.12.1-4 0
500 http://archive.ubuntu.com/ubuntu/precise/main amd64 Packages
100 /var/lib/dpkg/status
Und ich haben einen einfachen test:
#include <iostream>
#include <cppunit/ui/text/TestRunner.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
int main() {
CppUnit::Test* suite = CppUnit::TestFactoryRegistry::getRegistry().makeTest();
CppUnit::TextUi::TestRunner runner;
runner.addTest(suite);
runner.setOutputter(new CppUnit::CompilerOutputter(&runner.result(), std::cerr));
return runner.run() ? 0 : 1;
}
Und ich dies ist die compiler-Ausgabe:
$ g++ -lcppunit -o test.bin test.cpp
/tmp/ccoQDuGC.o: In function `main':
test.cpp:(.text+0x36): undefined reference to `CppUnit::TestFactoryRegistry::getRegistry(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test.cpp:(.text+0x75): undefined reference to `CppUnit::TextTestRunner::TextTestRunner(CppUnit::Outputter*)'
test.cpp:(.text+0x8b): undefined reference to `CppUnit::TestRunner::addTest(CppUnit::Test*)'
test.cpp:(.text+0x9a): undefined reference to `CppUnit::TextTestRunner::result() const'
test.cpp:(.text+0xe2): undefined reference to `CppUnit::CompilerOutputter::CompilerOutputter(CppUnit::TestResultCollector*, std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
test.cpp:(.text+0xf4): undefined reference to `CppUnit::TextTestRunner::setOutputter(CppUnit::Outputter*)'
test.cpp:(.text+0x150): undefined reference to `CppUnit::TextTestRunner::run(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, bool, bool)'
test.cpp:(.text+0x189): undefined reference to `CppUnit::TextTestRunner::~TextTestRunner()'
test.cpp:(.text+0x227): undefined reference to `CppUnit::TextTestRunner::~TextTestRunner()'
collect2: ld returned 1 exit status
Sicher zu stellen, die Bibliotheken nicht vorhanden unter /usr/lib
$ ls /usr/lib/| grep cppunit
libcppunit-1.12.so.1
libcppunit-1.12.so.1.0.0
libcppunit.a
libcppunit.la
libcppunit.so
Was bin ich, das ist die Ursache HIERFÜR?
- Eine Arbeit um die ich gefunden habe, ist Platz "-Wl,--no-Bedarf" vor "-lcppunit"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie sagen dem compiler, die Bibliotheken zu verknüpfen, um nach Sie sagen es, die Dateien zu kompilieren, d.h.
Ich lief in das gleiche Problem(Ubuntu 11.04)
Dies scheint ein bug in Ubuntu. Ihre Abhilfe "-Wl,--no-as-needed" funktioniert für mich und ist auch wie erwähnt einen workaround im verlinkten bug-report. Ich habe nicht getaucht, in der es genug zu entdecken, die eigentliche Ursache.
Die Ursache denke ich mal ist das cppunit-doc-tutorial-Datei "money_example.html" das schlägt auf hinzufügen, um das Makefile.bin eine Zeile
anstelle des richtigen
oder sogar mehr richtige
seit
CPPUNIT_LIBS
bringt in der-ldl
auf jeden Fall.LDFLAGS
fügt die Fahnen direkt nach dem linker ausführbare DateiLDADD
fügt Sie am Ende, wodurch die Fehler im ursprünglichen post.link hinzufügen mit cppunit und dl (-lcppunit -ldl) Bibliotheken