如何获得使用 XWindows 在 Windows 上 Ubuntu 上构建 Bash 的 C++ 程序?
How to get a C++ program that uses XWindows to build on Bash on Ubuntu on Windows?
我正在尝试获取一个使用 XWindows 在 Bash、Ubuntu 和 Windows 上构建的 C++ 程序。我知道 Bash on Ubuntu on Windows 不正式支持图形化 Linux 应用程序,但我希望尽可能构建程序。我已尝试尽可能减少我的问题,希望我提供了足够的信息。
首先,我使用以下命令安装了 libx11-dev 包和与之关联的包:
sudo apt-get install libx11-dev
其次,我的 Makefile 如下:
CXX = g++
CXXFLAGS = -Wall -MMD -lX11
EXEC = exe
OBJECTS = main.o window.o
DEPENDS = ${OBJECTS:.o=.d}
${EXEC}: ${OBJECTS}
${CXX} ${CXXFLAGS} ${OBJECTS} -o ${EXEC}
-include ${DEPENDS}
.PHONY: clean
clean:
rm ${EXEC} ${OBJECTS} ${DEPENDS}
三、window.h文件如下:
#ifndef __WINDOW_H__
#define __WINDOW_H__
#include <X11/Xlib.h>
class Xwindow {
Display *d;
public:
Xwindow();
};
#endif
第四个window.cc文件如下:
#include "window.h"
Xwindow::Xwindow() {
d = XOpenDisplay(NULL);
}
最后 main.cc 文件如下:
#include "window.h"
int main() {
Xwindow xw();
return 0;
}
当我 运行 我的 Makefile 时,我得到以下输出:
g++ -Wall -MMD -lX11 -c -o main.o main.cc
g++ -Wall -MMD -lX11 -c -o window.o window.cc
g++ -Wall -MMD -lX11 main.o window.o -o exe
window.o: In function `Xwindow::Xwindow()':
window.cc:(.text+0x12): undefined reference to `XOpenDisplay'
collect2: error: ld returned 1 exit status
Makefile:8: recipe for target 'exe' failed
make: *** [exe] Error 1
感谢任何帮助。
在某些环境中,包括 Ubuntu,您需要在使用这些库的对象文件后传递 -l
个参数。
此外,-l
不属于 CXXFLAGS
,它们应该属于 LIBS
,后者位于 ${OBJECTS}
之后。
我正在尝试获取一个使用 XWindows 在 Bash、Ubuntu 和 Windows 上构建的 C++ 程序。我知道 Bash on Ubuntu on Windows 不正式支持图形化 Linux 应用程序,但我希望尽可能构建程序。我已尝试尽可能减少我的问题,希望我提供了足够的信息。
首先,我使用以下命令安装了 libx11-dev 包和与之关联的包:
sudo apt-get install libx11-dev
其次,我的 Makefile 如下:
CXX = g++
CXXFLAGS = -Wall -MMD -lX11
EXEC = exe
OBJECTS = main.o window.o
DEPENDS = ${OBJECTS:.o=.d}
${EXEC}: ${OBJECTS}
${CXX} ${CXXFLAGS} ${OBJECTS} -o ${EXEC}
-include ${DEPENDS}
.PHONY: clean
clean:
rm ${EXEC} ${OBJECTS} ${DEPENDS}
三、window.h文件如下:
#ifndef __WINDOW_H__
#define __WINDOW_H__
#include <X11/Xlib.h>
class Xwindow {
Display *d;
public:
Xwindow();
};
#endif
第四个window.cc文件如下:
#include "window.h"
Xwindow::Xwindow() {
d = XOpenDisplay(NULL);
}
最后 main.cc 文件如下:
#include "window.h"
int main() {
Xwindow xw();
return 0;
}
当我 运行 我的 Makefile 时,我得到以下输出:
g++ -Wall -MMD -lX11 -c -o main.o main.cc
g++ -Wall -MMD -lX11 -c -o window.o window.cc
g++ -Wall -MMD -lX11 main.o window.o -o exe
window.o: In function `Xwindow::Xwindow()':
window.cc:(.text+0x12): undefined reference to `XOpenDisplay'
collect2: error: ld returned 1 exit status
Makefile:8: recipe for target 'exe' failed
make: *** [exe] Error 1
感谢任何帮助。
在某些环境中,包括 Ubuntu,您需要在使用这些库的对象文件后传递 -l
个参数。
此外,-l
不属于 CXXFLAGS
,它们应该属于 LIBS
,后者位于 ${OBJECTS}
之后。