(C++) stat: No such file or directory. Document root ("") not valid.
January 25, 2018 · View on GitHub
(C++) 

stat: No such file or directory. Document root ("") not valid.
Full error message
stat: No such file or directory Document root ("") not valid.
Operating system(s) or programming environment(s)
Ubuntu 10.10 (maverick)
Qt Creator 2.0.0
Console application
- G++ 4.4.5
Libraries used:
Boost: version 1.42
Qt: version 4.7.0 (32 bit)
STL: GNU ISO C++ Library, version
4.4.5
Wt: version 3.1.2
Project file
#------------------------------------------------- # # Project created by QtCreator 2010-11-18T12:10:20 # #------------------------------------------------- QT += core QT -= gui TARGET = CppHelloWtQtCreatorUbuntu LIBS += -L/usr/lib -lwt -lwthttp QMAKE_CXXFLAGS += -DNDEBUG CONFIG += console CONFIG -= app_bundle TEMPLATE = app SOURCES += main.cpp
Build log
Running build steps for project CppHelloWtQtCreatorUbuntu... Configuration unchanged, skipping qmake step. Starting: "/usr/bin/make" -w make: Entering directory `/home/richel/qtsdk-2010.04/bin/Projects/Website/CppHelloWtQtCreatorUbuntu-build-desktop' g++ -c -pipe -DNDEBUG -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../CppHelloWtQtCreatorUbuntu -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I. -I../CppHelloWtQtCreatorUbuntu -I. -o main.o ../CppHelloWtQtCreatorUbuntu/main.cpp g++ -o CppHelloWtQtCreatorUbuntu main.o -L/usr/lib -L/usr/lib -lwt -lwthttp -lQtCore -lpthread make: Leaving directory `/home/richel/qtsdk-2010.04/bin/Projects/Website/CppHelloWtQtCreatorUbuntu-build-desktop' The process "/usr/bin/make" exited normally.
Source code
This source was copied literally from the Wt website (http://www.webtoolkit.eu/wt\#/src/hello).
/* * Copyright 2008 Emweb bvba, Heverlee, Belgium. * * See the LICENSE file for terms of use. */ #include <Wt/WApplication> #include <Wt/WBreak> #include <Wt/WContainerWidget> #include <Wt/WLineEdit> #include <Wt/WPushButton> #include <Wt/WText> #include <boost/version.hpp> using namespace Wt; /* * A simple hello world application class which demonstrates how to react * to events, read input, and give feed-back. */ class HelloApplication : public WApplication { public: HelloApplication(const WEnvironment& env); private: WLineEdit *nameEdit_; WText *greeting_; void greet(); }; /* * The env argument contains information about the new session, and * the initial request. It must be passed to the WApplication * constructor so it is typically also an argument for your custom * application constructor. */ HelloApplication::HelloApplication(const WEnvironment& env) : WApplication(env) { setTitle("Hello world"); // application title root()->addWidget(new WText("Your name, please ? ")); // show some text nameEdit_ = new WLineEdit(root()); // allow text input nameEdit_->setFocus(); // give focus WPushButton *b = new WPushButton("Greet me.", root()); // create a button b->setMargin(5, Left); // add 5 pixels margin root()->addWidget(new WBreak()); // insert a line break greeting_ = new WText(root()); // empty text /* * Connect signals with slots * * - simple Wt-way */ b->clicked().connect(this, &HelloApplication::greet); /* * - using an arbitrary function object (binding values with boost::bind()) */ nameEdit_->enterPressed().connect (boost::bind(&HelloApplication::greet, this)); } void HelloApplication::greet() { /* * Update the text, using text input into the nameEdit_ field. */ greeting_->setText("Hello there, " + nameEdit_->text()); } WApplication *createApplication(const WEnvironment& env) { /* * You could read information from the environment to decide whether * the user has permission to start a new application */ return new HelloApplication(env); } int main(int argc, char **argv) { /* * Your main method may set up some shared resources, but should then * start the server application (FastCGI or httpd) that starts listening * for requests, and handles all of the application life cycles. * * The last argument to WRun specifies the function that will instantiate * new application objects. That function is executed when a new user surfs * to the Wt application, and after the library has negotiated browser * support. The function should return a newly instantiated application * object. */ return WRun(argc, argv, &createApplication); }
Process
In a terminal, I checked if stat was present:
stat
The following screen output convinced me it was:
stat: missing operand Try `stat --help' for more information. richel@richel1-desktop:~$
Obtaining the version of stat:
richel@richel1-desktop:~$ stat --version
Resulting in the following screen output, convincing me to have version 8.5 of stat:
stat (GNU coreutils) 8.5 Copyright 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Michael Meskes.
Adding some linker flags, by adding the lines below to the project file, does not solve the problem:
QMAKE_LFLAGS += \ --docroot=. \ --http-server=0.0.0.0 \ --http-port=8080
Solution
The program needs to have arguments supplied. Add the following arguments to the Run Settings:
--docroot . --http-address 0.0.0.0 --http-port 8080