我的本地计算机上有一个项目,我想在服务器上运行/调试cppunit测试(Debian)。我使用Netbeans创建了.o文件,并将权限设置为可执行文件。
drwxr-xr-x 2 myName myGroup 4096 18. Dec 08:40 .
drwxr-xr-x 3 myName myGroup 4096 18. Dec 08:40 ..
-rwxr-xr-x 1 myName myGroup 393488 18. Dec 08:40 SisyTestData.o
-rwxr-xr-x 1 myName myGroup 3127 18. Dec 08:40 SisyTestData.o.d
-rwxr-xr-x 1 myName myGroup 30016 18. Dec 08:40 SisyTestDataRunner.o
-rwxr-xr-x 1 myName myGroup 173 18. Dec 08:40 SisyTestDataRunner.o.d
如果我尝试从它所在的目录运行./SisyTestDataRunner,我
bash: ./SisyTestDataRunner: Datei oder Verzeichnis nicht gefunden
(表示:未找到文件或目录)
如果我尝试运行./SisyTestDataRunner.o我得到
bash: ./SisyTestDataRunner.o: Kann die Datei nicht ausführen.
(表示:无法执行文件)
SisyTestDataRunner如下所示:
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
int main() {
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener(&result);
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener(&progress);
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());
runner.run(controller);
// Print test in a compiler compatible format.
CPPUNIT_NS::CompilerOutputter outputter(&result, CPPUNIT_NS::stdCOut());
outputter.write();
return result.wasSuccessful() ? 0 : 1;
}
文件SisyTestData包含一个在我在本地计算机上启动时运行的测试用例(但它在服务器上运行)。
通常无法从命令行运行netbeans创建的文件吗?我是否必须直接在服务器上编译和链接它?
答案 0 :(得分:4)
您不运行目标文件。链接器使用目标文件来创建实际的可执行文件。
从C ++(或C)中的一组源文件创建程序分几步完成:
#include
。SisyTestData.o
)。答案 1 :(得分:0)
好!分步进行。
为此,我认为您可以在此模式下直接链接远程计算机中的目标文件:
$ g++ -o mybin myobj.o
请注意,链接器应该能够找到项目中包含的库的所有引用!
2)通常在NetbeansIDE的标准C ++项目中,在构建proyect之后,您可以在文件夹“dist”中找到可执行文件“dist / Debug / GNU-Linux-x86” 此文件已准备好在基于Linux的本地和远程计算机上运行。
3)您的可执行文件可能需要一些系统库。 本地计算机中的此库已正确引用,但未在远程计算机中引用
解决此问题可以帮助您完成命令,
$ ldd mybin
您可以在此屏幕截图中查看简化的整个过程:
NetBeans中的编译步骤: