Ubuntu-18.04.1 上的 gtkada-2018 Adacore 安装问题

gtkada-2018 Adacore installation Issue on Ubuntu-18.04.1

我正在 Ubuntu 18.04.1 桌面(全新安装)上安装 gtkada-2018 (Adacore),但它在链接时导致 libxcb-xlib.so.0 警告。 谁能帮我解决这个问题?

  1. 我首先安装了 GNAT Community

    须藤./gnat-community-2018-20180528-x86_64-linux-bin 将目录设置为 /usr/gnat 在这里,带 GPS 的 Ada 工作正常。

  2. 接下来,gtkada-community-community-2018-x86_64-linux-bin

    命令是$sudo ./doinstall

-----long build messages----

Bind
[gprbind]    testgtk.bexch
[Ada]        testgtk.ali
[gprbind]    test_rtree.bexch
[Ada]        test_rtree.ali
Link
[link]       testgtk.adb
[link]       test_rtree.adb
/usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.3.1/ld: **warning: libxcb-xlib.so.0, needed by /usr/gnat/lib/libgtk-3.so, not found (try using -rpath or -rpath-link)**
/usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.3.1/ld: **warning: libxcb-xlib.so.0, needed by /usr/gnat/lib/libgtk-3.so, not found (try using -rpath or -rpath-link)**
-----follow long link messages ------
  1. 并且,示例程序 testgtk 未链接且未创建 exec 文件。

  2. 安装后,当使用 GPS 向导创建一个非常简单的 gtkada 程序并构建时,会显示相同的消息:

Link [link] main.adb /usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.3.1/ld: warning: libxcb-xlib.so.0, needed by /usr/gnat/lib/libgtk-3.so, not found (try using -rpath or -rpath-link) [2018-11-15 20:43:28] process terminated successfully, elapsed time: 01.00s

  1. 100% 可重现上述症状。
  2. gtkada-2017 没有发生这个问题。

您好像漏了一个包裹。尝试安装:

sudo apt install libxcb-composite0

我正在根据您的新 post:

编辑我的答案

可能只是配置问题,GtkAda 没有找到 Ada 编译器。我发现 this post 建议 运行 gprbuild with -v ,然后 gprconfig with -v 检查配置。

还有一件事:我了解到您是通过下载的文件安装 GNAT 的。为什么不尝试从 Ubuntu 存储库安装它呢?

谢谢,我试过了,但是安装提前退出如下:

  1. GNAT 安装在 /usr/gnat/
  2. 此命令:sudo apt install libxcb-composite0
  3. Gtkada 安装在 /usr/gtkada/ 消息是:

    目录 /usr/gtkada 不存在。 您要创建它 [Y/n] 吗?是 您现在准备好继续安装 [Y/n] 了吗? y

    正在复制 Gtk+ 二进制文件 设置环境 编译 GtkAda 检查构建系统类型... x86_64-unknown-linux-gnu 正在检查主机系统类型... x86_64-unknown-linux-gnu 检查目标系统类型... x86_64-unknown-linux-gnu 检查 gcc ... gcc 检查 C 编译器是否工作...是的 检查 C 编译器默认输出文件名... a.out 检查可执行文件的后缀... 检查我们是否在交叉编译......不 检查目标文件的后缀... o 检查我们是否使用 GNU C 编译器...是的 检查 gcc 是否接受 -g... 是

    正在检查 gcc 选项以接受 ISO C89...none 需要

    正在检查 gprbuild.../usr/bin/gprbuild

    正在检查 gprinstall.../usr/bin/gprinstall

    正在检查您的 gnat 编译器是否可以使用一个简单示例...错误:未找到语言 'ada' 的本机编译器,默认运行时 conftest.gpr:1:09: 没有为这个项目定义语言 gprbuild:"conftest.gpr" 处理失败

    没有

    配置:错误:/usr/bin/gprbuild编译时测试失败!检查您的配置。

    发生错误。请参阅 install.log.

  4. 我尝试了 GPS 并用一个非常简单的程序测试了 Ada,它正常构建和工作。

我删除了/usr/gtkada目录,但libxcb-composite0现在仍然存在。 在同一目录中重新安装 gtkada /usr/gnat.

安装到最后,但是在链接示例程序testgtk时出现错误,没有创建示例的可执行文件。 这些消息是:

 [index]        libgtkada_gl.a
 Bind
 [gprbind]      testgtk.bexch
 [Ada]          testgtk.ali
 [gprbind]      test_rtree.bexch
 [Ada]          test_rtree.ali
Link
 [link]         testgtk.adb
 [link]         test_rtree.adb
/usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.3.1/ld: 
warning: libxcb-xlib.so.0, needed by /usr/gnat/lib/libgtk-3.so, 
not found (try using -rpath or -rpath-link)
/usr/gnat/bin/../libexec/gcc/x86_64-pc-linux-gnu/7.3.1/ld: 
warning: libxcb-xlib.so.0, needed by /usr/gnat/lib/libgtk-3.so, 
not found (try using -rpath or -rpath-link)
/usr/gnat/bin/gprinstall  -p -f --project-subdir=lib/gnat 
--build-var=GTKADA_BUILD,LIBRARY_TYPE --install-name=gtkada --prefix=/usr/gnat
-XGTK_PREFIX=/usr/gnat -XLIBRARY_TYPE=static --build-name=static \
--sources-subdir=include/gtkada/gtkada.static \
--lib-subdir=lib/gtkada/gtkada.static \ -Psrc/gtkada.gpr
Install project GtkAda - static
/usr/gnat/bin/gprinstall  -p -f --project-subdir=lib/gnat
--build-      var=GTKADA_BUILD,LIBRARY_TYPE --install-name=gtkada
--prefix=/usr/gnat
-XGTK_PREFIX=/usr/gnat -XLIBRARY_TYPE=static-pic --build-name=static-pic \
--sources-subdir=include/gtkada/gtkada.static-pic \
--lib-subdir=lib/gtkada/gtkada.static-pic \
-Psrc/gtkada.gpr
 Install project GtkAda - static-pic
 /usr/gnat/bin/gprinstall  -p -f --project-subdir=lib/gnat 
--build-var=GTKADA_BUILD,LIBRARY_TYPE --install-name=gtkada --prefix=/usr/gnat
XGTK_PREFIX=/usr/gnat -XLIBRARY_TYPE=relocatable --build-name=relocatable \
--sources-subdir=include/gtkada/gtkada.relocatable \
--lib-subdir=lib/gtkada/gtkada.relocatable \
-Psrc/gtkada.gpr
Install project GtkAda - relocatable
/usr/gnat/bin/gprinstall  -p -f --project-subdir=lib/gnat --build-
var=GTKADA_BUILD,LIBRARY_TYPE --install-name=gtkada --prefix=/usr/gnat
-XGTK_PREFIX=/usr/gnat -XLIBRARY_TYPE=static \
--mode=usage -Psrc/tools/tools.gpr
Install project Tools
cd testgtk; /usr/gnat/bin/gprinstall  -p -f --project-subdir=lib/gnat --build-  
var=GTKADA_BUILD,LIBRARY_TYPE --install-name=gtkada --prefix=/usr/gnat 
-XGTK_PREFIX=/usr/gnat -XLIBRARY_TYPE=static \
--mode=usage --exec-subdir=/usr/gnat/share/examples/gtkada/testgtk \
-Ptestgtk.gpr -aP ../src

安装项目 TestGtk

GtkAda has now been installed.                                   --

-- 要使用该库,您可能需要更新 LD_LIBRARY_PATH -- -- 或者 运行 ldconfig。您可能还需要更新 GPR_PROJECT_PATH -- -- 包括 --

-- /usr/gnat/lib/gnat

GtkAda 现已安装到您的机器上。 您可以通过执行以下操作进入 GtkAda 环境: “/usr/gnat/bin/gtkada-env.sh”

我找到了解决方案。
我写了所有的故事来从头开始在 Ubuntu 18.04.1 中安装 gnat-2018 和 gtkada-2018 (Adacore)。

准备

#1--#8 只是为了我的记忆。

  1. 从头开始安装 Ubuntu 18.04.1
  2. 安装google-chrome
  3. sudo apt install chromium-browser
  4. sudo apt install synaptic
  5. gsettings set org.gnome.desktop.session idle-delay 1800
  6. sudo apt update
  7. sudo apt upgrade
  8. 重启OS

  9. sudo apt install make

  10. sudo apt install gcc
  11. sudo apt install gprbuild
  12. sudo apt update
  13. sudo apt upgrade

至此,准备工作已经完成。

GNAT 安装

  1. https://www.adacore.com/download/more 下载文件 Gnat-community-2018-20180528-x86_64-linux-bin
  2. 在Nautilus中设置文件可执行+x或勾选属性-permission-Execute
  3. 不使用 sudo 执行 Gnat-community-2018-20180528-x86_64-linux-bin

    sudo causes a warning in the installation process, then do without sudo in terminal, or just double-click the file in Nautilus.

  4. 需要安装目录,输入例如/usr/gnat

  5. 几分钟后,安装向导完成。
  6. 设置路径。
    例如export PATH=/usr/gnat/bin:$PATH 例如在 ~/.bashrc

现在,GPS 可以工作了,您可以使用除 gtkada 之外的所有 Ada 功能。

  1. 关闭终端

gtkada 准备

如果你想安装在同一目录下,例如/usr/gnat,然后跳过下一个 #21。

  1. gtkada 在另一个目录中

    If you want to install gtkada in another directory (e.g. /usr/gtkada), do in Terminal:
    sudo visudo

    Add the same PATH in the "Default" line as below (e.g. /usr/gnat/bin):
    Defaults secure_path="/usr/gnat/bin:/usr/local/sbin:...

    To save and quit in visudo are tricky, do as follows:
    ^o BS BS BS BS Enter Y Y ^x
    Enter to check again to make sure, sudo visudo, then exit with ^x
    after the checking.

从下一步开始,获取丢失的文件 libxcb-xlib-so.0.
文件直接拿不到,那就获取包含它的rpm文件,转成deb文件格式安装Ubuntu搞出来

  1. 转到http://rpm.pbone.net/index.php3/stat/3/limit/9/srodzaj/1/dl/40/search/libxcb.so.1/field[]/1/field[]/2
  2. 找到 PCLinuxOS 并转到 link www.pclinuxos.com/pclinuxos/apt/pclinuxos/64bit/RPMS.x86_64/libxcb-1.12-4pclos2017.x86_64.rpm
  3. 下载ftp.ntua.grlibxcb-1.12-4pclos2017.x86_64.rpm
  4. 设置文件可执行:
    libxcb-1.12-4pclos2017.x86_64.rpm (159.9kB).
  5. 安装可以将RPM文件转换为DEB文件的alien。

    sudo apt install alien

  6. 从 RPM 转换为 DEB

    sudo alien libxcb-1.12-4pclos2017.x86_64.rpm

    libxcb_1.12-5_amd64.deb 已生成。
    现在,这里有 2 个文件: mori@envy:~/下载$ ls -al lib*
    -rwxrwxr-x 1 mori mori 159903 Dec 27 18:12 libxcb-1.12-4pclos2017.x86_64.rpm
    -rw-r--r-- 1 root root 152024 Jan 1 12:43 libxcb_1.12-5_amd64.deb

  7. 安装 DEB 包:sudo dpkg -i libxcb_1.12-5_amd64.deb
  8. 目标文件在/usr/lib64目录中创建(不在/usr/lib中)
    mori@VB:/usr/lib64$ls -al libxcb-xlib*
    lrwxrwxrwx 1 root root 31 Dec 25 16:22 libxcb-xlib.so.0 -> ../../usr/lib64/libxcb.so.1.1.0
    lrwxrwxrwx 1 root root 31 Dec 25 16:22 libxcb-xlib.so.0.0.0 -> ../../usr/lib64/libxcb.so.1.1.0
    真正的文件是 libxcb.so.1.1.0,而 libxcb-xlib.so.0 只是 sym-link.
    现在,只保存 libxcb.so.1.1.0 到另一个安全的地方,我用的是 USB 驱动器。
  9. 卸载 deb 包:

    sudo dpkg -r libxcb

现在,你找到了丢失的文件,接下来将文件设置到 gtkada 安装程序中。

  1. 下载gtkada-2018(选择平台和年份) gtkada-community-2018-20180523-x86_64-linux-bin.tar.gz‖136.9 MiB 2018 年 5 月 24 日
  2. 设置为可执行文件
  3. 提取文件
  4. 复制文件libxcb.so.1.1.0到gtk-bin/lib64目录:
    Downloads/gtkada-community-community-2018-x86_64-linux-bin/gtk-bin/lib64
  5. 设置libxcb.so.1.1.0可执行文件
  6. 设置符号-link
    gtk-bin/lib64$sudo ln -s ./libxcb.so.1.1.0 ./libxcb-xlib.so.0
  7. 检查是否创建了 sym-link
    /Downloads/gtkada-community-community-2018-x86_64-linux-bin/gtk-bin/lib64$ls -al libxcb*
    -rwxr-xr-x 1 mori mori 154424 2017 年 8 月 16 日 libxcb.so.1.1.0
    lrwxrwxrwx 1 root root 17 Dec 25 22:18 libxcb-xlib.so.0 -> ./libxcb.so.1.1.0
  8. 再次复制libxcb.so.1.1.0到gtk-bin/lib目录:
    Downloads/gtkada-community-community-2018-x86_64-linux-bin/gtk-bin/lib
  9. 设置libxcb.so.1.1.0可执行文件
  10. 设置符号-link
    gtk-bin/lib$sudo ln -s ./libxcb.so.1.1.0 ./libxcb-xlib.so.0
  11. 检查是否创建了 sym-link
    /Downloads/gtkada-community-community-2018-x86_64-linux-bin/gtk-bin/lib$ls -al libxcb*
    -rwxr-xr-x 1 mori mori 154424 2017 年 8 月 16 日 libxcb.so.1.1.0
    lrwxrwxrwx 1 root root 17 Dec 25 22:18 libxcb-xlib.so.0 -> ./libxcb.so.1.1.0

现在你已经准备好了所有的设置。

gtkada 安装

  1. Downloads/gtkada-community-community-2018-x86_64-linux-bin$sudo ./doinstall
    设置安装目录/usr/gnat(相同)或/usr/gtkada 否则。
    几分钟后,安装完成。

设置 gtkada 环境

不要关注安装程序的评论,它们是针对其他 OS 的评论。
现在,~/.bashrc 的底部是:

export PATH=/usr/gnat/bin:$PATH
  1. 像这样再添加一行
    . ./gtkada-env.sh(注:点-space-点)

  2. 使用以下文本创建一个文本文件 ~/gtkada-env.sh:

    prefix="/usr/gnat"
    LD_LIBRARY_PATH_64=$prefix/lib:$LD_LIBRARY_PATH_64
    PKG_CONFIG_PATH=$prefix/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig
    GDK_PIXBUF_MODULE_FILE=$prefix/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache
    GDK_PIXBUF_MODULEDIR=$prefix/lib/gdk-pixbuf-2.0/2.10.0/loaders/
    FONTCONFIG_FILE=/etc/fonts/fonts.conf
    XDG_DATA_DIRS=$prefix/share:$XDG_DATA_DIRS
    XDG_CONFIG_DIRS=$prefix/etc:$XDG_CONFIG_DIRS
    GSETTINGS_BACKEND=内存
    GLADE_BASE_DIR=$前缀
    GPR_PROJECT_PATH=$prefix/lib/gnat:$GPR_PROJECT_PATH
    导出 LD_LIBRARY_PATH_64
    导出 PKG_CONFIG_PATH
    导出 GDK_PIXBUF_MODULE_FILE
    导出 GDK_PIXBUF_MODULEDIR
    导出 FONTCONFIG_FILE
    导出 XDG_DATA_DIRS
    导出 XDG_CONFIG_DIRS
    导出 GSETTINGS_BACKEND
    导出 GLADE_BASE_DIR
    导出 GPR_PROJECT_PATH

注意1:如果你安装到另一个目录,第一行应该改变,
例如/usr/gtkada 然后更改 prefix="/usr/gtkada"
注 2:1/05/2019 FONTCONFIG_FILE 已更改。

  1. 关闭终端

测试构建功能

  1. 最简单的方法是使用 GPS 向导

    • 创建一个测试目录和运行 gps
    • ~/ada/simplegtkada$gps
    • "create new project"、"GtkAda"、"Simple Window"可以做一个简单的Hello world。
    • Build 和 运行 可以检查功能。
    • 检查终端应用程序执行是否没有输出任何错误:
    • ~/ada/simplegtkada/obj$./main
  2. 使用 testgtk 进行完整构建测试

    • 复制所有带有-a 选项的安装文件到另一个目录。
    • ~/下载$cp -a gtkada-community-community-2018-x86_64-linux-bin gtkada-test
    • 删除~/Downloads/gtkada-test/testgtk/obj中的所有文件
    • 删除 ~/Downloads/gtkada-test/testgtk 中的 2 个文件 testgtk 和 test_rtree
    • ~/Downloads/gtkada-test/testgtk$gprbuild
    • 所有的 testgtk 文件都应该重新编译和 linked。
    • 尝试./testgtk并检查功能。
    • ~/Downloads/gtkada-test/testgtk$./testgtk

已知问题

  1. gedit 问题
    来自终端的 gedit 无法启动,但 Nautilus 可以启动它。 环境设置应该会影响它,但我无法修复它。 如果有人知道解决方案,请告诉我。

  2. 编译器参考警告
    这些警告在静态和静态图片编译时都会显示,但我认为我们可以忽略它们(它们在 2017 年没有发生):
    gtkada-canvas_view.ads:590:07: 警告:形式参数 "At_Point" 未被引用
    gtkada-canvas_view.ads:591:07: 警告:形式参数 "Context" 未被引用
    gtkada-canvas_view.ads:792:07: 警告:形式参数 "Item" 未被引用
    gtkada-canvas_view.ads:1984:07: 警告:形式参数 "At_Point" 未被引用
    gtkada-canvas_view.ads:1985:07: 警告:形式参数 "Context" 未被引用
    gtkada-canvas_view.ads:1992:07: 警告:形式参数 "View" 未被引用

gtkada 2018版的福利

它不再显示通常在 2016 和 2017 版本中的错误消息,例如:
Gtk-Message: 加载模块失败 "unity-gtk-module"
Gtk-Message: 加载模块失败 "canberra-gtk-module"
在启动 GPS 和 gtkada 应用程序时。这让我感觉好多了。

我确认 Ubuntu 18.04.02 上的最新 Adacore GNAT-2019 和 GTKADA-2019 修复了大部分安装问题。

GNAT-2019 与 2018 一样只需双击即可。

/usr/gnat/bin: 添加到 PATH

的顶部

sudo visudo 如果 GTKADA 安装在不同的目录,可能需要这里,但如果两者在同一目录(例如 /usr/gnat)。

GTKADA-2019 只是 sudo ./doinstall

日志中有一些警告,但看起来很小。

上面的#43 和#44 应该完成。默认环境设置不适用于Ubuntu(在gtkada-env.sh之上使用)。