我用C代码编写了这个程序。它是一个hsetroot的叉子。我接受它然后添加更多选项,以便可以操作设置为桌面的图像和颜色。用户可以更好地控制它。它编译和安装没有任何错误。
我是在32位Debian Linux操作系统上完成的。然后我出去给我一台双核64位笔记本电脑(50美元)安装Linux 64位。我把我的程序搞砸了,可能会把它清理一下,只是为了GP(通用)。
当我尝试在命令行上编译它时,我现在遇到错误,它将不再编译。代码没有任何改变。因此不应该看到任何错误。
然而,我得到这个错误,而不是完全编译。关于它的更有趣的事情如果我使用-m32 arg我会得到一个不同的编译错误然后如果我使用或不使用-m46 arg。
我使用或不使用-m64 arg使用此命令编译然后得到以下错误。
gcc `imlib2-config --cflags` `imlib2-config --libs` mhsetroot-v1.6.2.c -o myapp
然后得到此错误
/usr/bin/ld: /tmp/cclrRrBO.o: undefined reference to symbol 'XClearWindow'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO
missing from command line collect2: error: ld returned 1 exit status
它告诉我XClearWindow没有在头文件中定义。 /usr/include/X11/xlib.h
extern int XClearWindow(
Display* /* display */,
Window /* w */
当我使用-m32 arg编译它时,我得到了这个错误
/development/c/mhsetroot$ gcc -m32 `imlib2-config --cflags` `imlib2- config --libs` mhsetroot-v1.6.2.c -o myapp
我收到此错误
In file included from mhsetroot-v1.6.2.c:29:0:
/usr/include/X11/Xlib.h:38:23: fatal error: sys/types.h: No such file or directory #include <sys/types.h>
告诉sys / types.h现在出错了什么 -
是什么赋予了 - 在32位Linux操作系统上执行此操作时,代码从未改变过。但现在在64位BIT Linux操作系统上,我遇到了问题。什么是真正的问题?因为这不是我的代码。
答案 0 :(得分:2)
需要添加的命令行arg是-lX11以告诉它链接X11 ...(当我运行32位Linux时不需要,但现在需要64位Linux NIW(否)想法为什么)这会导致“DSO从命令行中丢失”链接错误。它现在没有编译 -