AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 28470
Accepted
htorque
htorque
Asked: 2011-03-01 11:50:03 +0800 CST2011-03-01 11:50:03 +0800 CST 2011-03-01 11:50:03 +0800 CST

如何从源代码构建 Unity?

  • 772

我想知道如何在当前开发版本中从源代码构建 Unity。请涵盖以下主题:

  • 编译 Unity 需要哪些包?
  • 我在哪里可以获得当前的源代码?
  • 实际配置和编译 Unity 的步骤是什么?
  • 是否可以与存储库中的版本一起安全地运行最新版本?
unity
  • 6 6 个回答
  • 26798 Views

6 个回答

  • Voted
  1. Best Answer
    htorque
    2011-03-01T11:57:07+08:002011-03-01T11:57:07+08:00

    从源头构建统一

    在本指南中,您将构建 Unity 主干的单独版本(本地安装到您的主目录),因此您无需担心破坏 Ubuntu 存储库中的版本,也无需在整个过程中获得 root 权限整个过程(安装构建依赖项除外)。

    0. 安装构建依赖

    您需要运行一次以安装所有必要的构建依赖项:

    sudo apt-get install bzr cmake compiz-dev gnome-common libbamf3-dev libboost-dev \
    libboost-serialization-dev libgconf2-dev libgdu-dev libglewmx1.6-dev \
    libgnome-desktop-3-dev libibus-1.0-dev libindicator3-dev libjson-glib-dev \
    libnotify-dev libnux-2.0-dev libpci-dev libsigc++-2.0-dev libunity-dev \
    libunity-misc-dev libutouch-geis-dev libxxf86vm-dev libzeitgeist-dev xsltproc
    

    如果您deb-src启用了源代码存储库 (aka ),则可以改用:

    sudo apt-get build-dep unity
    

    1. 准备环境

    将SOURCE和替换PREFIX为您希望源文件和构建文件所在的目录。在此示例中,我将两者都放在我的主目录中:

    export SOURCE=$HOME/source/unity
    export PREFIX=$HOME/build/unity
    
    export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
    export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
    export LD_RUN_PATH="$PREFIX/lib:$LD_RUN_PATH"
    export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"
    
    mkdir -p "$PREFIX"
    mkdir -p "$SOURCE"
    cd "$SOURCE"
    

    2. 构建 Nux

    您可能需要获取最新版本的NuxUnity 主干进行编译:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --disable-examples --disable-gputests --disable-tests --prefix="$PREFIX"
    make -j4
    make install
    cd ..
    

    提示:大多数现代台式机和笔记本电脑都有多个内核。利用这一点,您可以大大加快编译速度。该make命令对此具有内置支持,您可以使用-jN开关激活它,其中N是要并行运行的作业数。一个好的经验法则是在处理器上运行 2 倍的内核数。因此,在普通的双核计算机上,您应该运行make -j4以最小化编译时间。

    3. 建立团结

    现在获取最新的 Unity 代码并构建它:

    bzr branch lp:unity
    cd unity
    mkdir build
    cd build
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON -DCMAKE_INSTALL_PREFIX="$PREFIX"
    make -j4
    make install
    

    就是这样,注销并重新登录,您应该正在运行最新的 Unity。或者,您可以运行

    setsid $PREFIX/bin/unity
    

    4. 更新

    确保准备好步骤 1 中描述的环境,然后只需输入顶级目录nux和unity运行bzr pull、重建和重新安装。

    我建议删除并重新创建build目录中的unity目录,以确保没有旧文件干扰您的构建。

    5. 去除团结

    删除三个目录$SOURCE,$PREFIX和~/.compiz-1。


    有用的链接:

    • http://unity.ubuntu.com/getinvolved/development/unity/
    • 64
  2. Cam
    2011-03-27T22:11:09+08:002011-03-27T22:11:09+08:00

    我根据 Wayland 构建脚本和这些说明制作了一个脚本,用于自动安装先决条件、克隆、更新、配置和构建 Unity。

    https://github.com/bitshifter/Unity-Build/raw/master/build-unity.sh

    • 9
  3. Jorge Castro
    2011-08-20T17:28:38+08:002011-08-20T17:28:38+08:00

    在你的主目录中构建

    有时出于测试原因,在您的主目录中构建 Unity 和 nux 很有用,这样您就可以尝试查看是否在主干中修复了某些内容,而无需使用包和/或 PPA。我问 Jason Smith(Unity 开发人员)他是如何构建 Unity 的,他向我解释了他的方法:

    1. 确保您拥有此答案中的所有构建依赖项。

    2. 首先在您的家中创建一个名为“staging”的目录,这是我们将构建 Unity 的地方。创建一个准备构建环境的小脚本,用你自己的替换主目录:

      #!/bin/bash
      
      PREFIX=/home/jorge/staging
      
      export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"
      export LD_LIBRARY_PATH="$PREFIX/lib/"
      export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/"
      

      我调用unity.sh它,每次我想构建 Unity 时都会运行它。所以基本上chmod +x unity.sh然后./unity.sh当你想要构建时。

    3. 构建 nux:

      bzr branch lp:nux
      cd nux
      ./autogen.sh --prefix=/home/jorge/staging
      make -j4
      make install
      cd ..
      
    4. 建立统一:

      bzr branch lp:unity
      cd unity
      mkdir build
      cd build
      cmake .. -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/ -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
      make -j4
      make install
      

    注意:这会在您的主目录中构建 nux 和 unity,这里不需要 sudo 或类似的东西。

    • 注销并重新登录将自动运行此版本的 Unity/nux,因为它是内置的~/.compiz
    • 要恢复到正常包,只需注销、删除~/.compiz并重新登录。
    • 7
  4. ish
    2012-06-29T17:53:45+08:002012-06-29T17:53:45+08:00

    默认环境(Unity)的源代码可以在包中找到unity。安装源代码apt-get source unity,构建它的依赖sudo apt-get build-dep unity项并破解。

    这将让您将启动器定位在右侧、底部、顶部等位置。

    • 6
  5. Nitin Venkatesh
    2013-01-08T07:00:48+08:002013-01-08T07:00:48+08:00

    这里有优秀的官方文档——Developing Unity。

    这是关于构建 Unity 的摘录 - 从源代码安装和编译

    建立团结

    这些说明将帮助您从源头建立统一。但是,有几点需要考虑:

    • 建议您永远不要复制您在主目录之外本地构建的任何内容。这样做是自找麻烦,尤其是在我们构建整个桌面外壳时。如果您设法破坏了您的系统范围的桌面外壳,您将成为一个非常可悲的程序员!
    • 假设您正在运行精确的 Ubuntu 版本。
    • 还假设您希望从主干(即 lp:unity)构建统一。

    获取源代码:

    如果您尚未安装 Bazaar,请立即安装:

    sudo apt-get install bzr
    

    您需要为统一代码创建一个文件夹。做这样的事情:

    mkdir -p ~/code/unity
    cd ~/code/unity
    

    让我们从启动板获取代码:

    bzr branch lp:unity trunk
    

    可能还要等一下。
    安装构建依赖项:

    我们需要获得统一的构建依赖项。值得庆幸的是,apt-get 使这变得微不足道:

    sudo apt-get build-dep unity
    

    编译统一:

    使用这组 bash 函数可以显着简化此步骤。要使用它们,请将以下 bash 代码复制到主目录中名为 的文件中.bash_functions:

    function recreate-build-dir()
    {
       rm -r build
       mkdir build
       cd build
    }
    
    function remake-autogen-project()
    {
        ./autogen.sh --prefix=$HOME/staging --enable-debug
        make clean && make && make install
    }
    
    function remake-unity()
    {
        recreate-build-dir
        cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DCMAKE_INSTALL_PREFIX=$HOME/staging/ -DGSETTINGS_LOCALINSTALL=ON
        make  && make install
    }
    
    function unity-env
    {
     export PATH=~/staging/bin:$PATH
     export XDG_DATA_DIRS=~/.config/compiz-1/gsettings/schemas:~/staging/share:/usr/share:/usr/local/share
     export LD_LIBRARY_PATH=~/staging/lib:${LD_LIBRARY_PATH}
     export LD_RUN_PATH=~/staging/lib:${LD_RUN_PATH}
     export PKG_CONFIG_PATH=~/staging/lib/pkgconfig:${PKG_CONFIG_PATH}
     export PYTHONPATH=~/staging/lib/python2.7/site-packages:$PYTHONPATH
    }
    

    现在在终端中运行它:

    echo ". ~/.bash_functions" >> ~/.bashrc
    

    这可确保您下次打开 bash shell 时,您可以使用上面列出的功能。为了避免关闭并重新打开终端,我们可以手动读取它们一次:

    . ~/.bash_functions
    

    您现在应该能够运行:

    remake-unity
    

    从trunk/我们之前创建的目录中。就是这样——你正在建立团结!

    • 4
  6. Yann
    2011-07-06T05:58:27+08:002011-07-06T05:58:27+08:00

    最近安装变得更加棘手:compiz 中添加了一个名为 GTK Load 的新模块(否则它将在 XInternAtom 中崩溃)。我们需要激活这个模块才能使用 4.0.1,但是激活它会导致 unity 3.8 崩溃。

    两个人都越来越难保住了。我这样做的方式是:

    • 进入 compiz-1 文件夹并将所有 .so 重命名为 .so1,libgtkloader.so 除外
    • 使用 unity 4.0.1 重新启动 compiz
    • 在 compizconfig-settings-manager 中激活 gtk Load 模块
    • 将库重命名为 .so
    • 重新启动compiz。
    • 2

相关问题

  • 如何将 Web 应用程序放入 Unity Launcher?

  • Ubuntu 上网本 10.10 中没有 Alt+F2?

  • Unity 中的 gnome-do 样式键盘快捷键

  • 在哪里提交 Unity 的错误/愿望清单?

  • Unity 启动器——它可以作为单独的包提供吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve