【发布时间】:2012-12-05 10:11:48
【问题描述】:
我在本地计算机上有一个项目,我想在服务器 (Debian) 上运行/调试 cppunit 测试。我使用 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 我会得到 p>
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 创建的文件吗?是不是必须直接在服务器上编译链接?
【问题讨论】:
-
我认为你的问题基本上是:
why does Netbeans not generate an executable file ?。一般不能执行对象 (.o) 文件。 -
.o 文件由编译器创建,但链接器仍然必须将它们变成可执行文件。
标签: c++ netbeans remote-debugging cppunit