如何在Windows上使用XWindows在Ubuntu上构建Bash的C ++程序?

时间:2018-05-02 16:14:46

标签: c++ x11 bash-on-windows

我正在尝试使用XWindows在Windows上的Ubuntu上构建Bash的C ++程序。据我所知,Windows上的Ubuntu上的Bash并不正式支持图形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

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在某些环境中,包括Ubuntu,您需要在使用这些库的目标文件之后传递-l个参数。

此外,-l不属于CXXFLAGS,它们应位于LIBS之后的${OBJECTS}