Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt Fedora上的编译(依赖项?)错误_Qt_X11_Fedora - Fatal编程技术网

Qt Fedora上的编译(依赖项?)错误

Qt Fedora上的编译(依赖项?)错误,qt,x11,fedora,Qt,X11,Fedora,我一直在开发一个名为RoboJournal的程序,最近我完成了0.4.1版本。我目前正在为Fedora打包,但由于某些原因,该程序无法在该操作系统上编译。完全相同的代码可以在Windows和任何基于Debian的Linux(Debian本身、Ubuntu、Mint等)上构建。我为Debian打包这个没有问题。以下是编译器输出错误消息(在Fedora18KDE版本上运行): 问题似乎是链接器找不到控制XkbGetIndicatorState信号(X11 libs之一)的内容。这用于确定在某个对话框

我一直在开发一个名为RoboJournal的程序,最近我完成了0.4.1版本。我目前正在为Fedora打包,但由于某些原因,该程序无法在该操作系统上编译。完全相同的代码可以在Windows和任何基于Debian的Linux(Debian本身、Ubuntu、Mint等)上构建。我为Debian打包这个没有问题。以下是编译器输出错误消息(在Fedora18KDE版本上运行):

问题似乎是链接器找不到控制XkbGetIndicatorState信号(X11 libs之一)的内容。这用于确定在某个对话框处于活动状态时是否启用caps lock。显然,任何基于Debian的东西都包括这个现成的库,而Fedora则没有。我认为这个错误仅仅是由于缺少一个包造成的,但我不确定是哪一个。谷歌没有给我任何有用的东西。有什么想法吗


任何想自己测试的人都可以从git://github.com/pwizard2/robojournal.git. 该应用程序依赖于以下软件包(到目前为止):qt、qt助手、qt mysql、qt-devel、qt-webkit、qt-webkit-devel。

问题可能是您没有将程序链接到
libX11
,因此您需要将
-lX11
添加到您的link命令中,然后一切都将正常运行

它在其他一些linux发行版上工作的原因是,它们允许使用仅间接拉入的库解析符号-因此,如果您的程序链接到一个链接到
libX11
的库,那么您将能够调用
libX11
中的例程


Fedora已经有好几年不允许这种间接链接(默认情况下)(请参阅),其他几个发行版也已经这样做了。

如果Fedora上没有X11运行时库,我会非常惊讶。。。是不是应该是
/usr/lib64/libX11。那么
?既然usrMerge功能进入了
/lib64
/usr/lib64
在Fedora上是一样的-第一个是到第二个的链接。我仍然很难做到这一点。我已将-lX11添加到makefile中受影响的类:“$(CXX)-c$(cxflags)$(INCPATH)-lX11-o dblogin.o ui/dblogin.cpp”,但我仍然收到此错误。我做错了什么?你把国旗放错地方了。带有
-c
的命令用于编译,它忽略链接器标志。您需要修改一个生成可执行文件的命令/I通过将-lX11放入makefile的头部分来实现这一点。谢谢你的帮助。
/usr/bin/ld: dblogin.o: undefined reference to symbol 'XkbGetIndicatorState'
/usr/bin/ld: note: 'XkbGetIndicatorState' is defined in DSO /lib64/libX11.so.6 so try adding it to the linker command line
/lib64/libX11.so.6: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status