我尝试为 DNSCrypt 构建一个插件,但它一直告诉我它需要一些其他文件。
我需要知道如何构建它,而且我从未从头开始编译过包。我一直能够使用存储库。
我使用带有 gcc 的 Ubuntu 14.04(64 位)随处编码
这是该插件的链接:GeoIP 插件
这是 dnscrypt 的链接:DNS加密
这是我尝试编译时得到的结果:
cabox@box-codeanywhere:~/workspace$ cmake . && make
CMake Error: The source directory "/home/cabox/workspace" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
cabox@box-codeanywhere:~/workspace$ cd plugin
cabox@box-codeanywhere:~/workspace/plugin$ cmake . && make
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cabox/workspace/plugin
[100%] Building C object CMakeFiles/geoip-block.dir/geoip-block.c.o
/home/cabox/workspace/plugin/geoip-block.c:14:29: fatal error: dnscrypt/plugin.h: No such file or directory
#include <dnscrypt/plugin.h>
^
compilation terminated.
make[2]: *** [CMakeFiles/geoip-block.dir/geoip-block.c.o] Error 1
make[1]: *** [CMakeFiles/geoip-block.dir/all] Error 2
make: *** [all] Error 2
如果需要更多信息,我会尽快添加。
Dnscrypt 构建一切正常,但我仍然得到 http://pastebin.com/MeU4Q24W
答案1
更新
看起来 terdon 在感恩节假期添加并更新了一些命令。这些添加了额外的和/或所需的功能。我要感谢他添加这些。
任务
首先,让我们从头开始。
cd ~ && rm -Rv workspace
现在,我们确保我们拥有适合 Ubuntu 的工具:
sudo apt-get update ## run make sure you get all things right
sudo apt-get install build-essential checkinstall
sudo apt-get install cmake wget software-properties-common python-software-properties autoconf
sudo add-apt-repository ppa:shnatsel/dnscrypt
sudo add-apt-repository ppa:maxmind/ppa
sudo apt-get update
sudo apt-get install libtool openssl libssl-dev
然后,如果您想要源代码管理中的包,我们需要添加更多工具。 DNScrypt 不需要它,但如果您再次从源代码构建项目:
sudo apt-get install cvs subversion git-core mercurial
您应该位于主目录中,因此现在我们需要 dnscrypt-proxy 的实际源 tarball:
下载钠(如果你还没有安装)
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.1.tar.gz tar xzf libsodium-1.0.1.tar.gz && cd libsodium-1.0.1 && ./configure make && make check && sudo make install sudo ldconfig && ./configure && cd ..
下载地理IP API(如果你还没有安装)
wget https://github.com/maxmind/geoip-api-c/archive/v1.6.3.tar.gz tar xzf v1.6.3.tar.gz && cd geoip-api-c-1.6.3 sh bootstrap && ./configure make && make check && sudo make install && cd ..
下载域名系统(如果你还没有安装)
wget http://www.nlnetlabs.nl/downloads/ldns/ldns-1.6.17.tar.gz tar xzf ldns-1.6.17.tar.gz && cd ldns-1.6.17 ./configure && make && sudo make install && cd ..
下载DNSCrypt-代理版本 1.4.1 Tar.bz2文件。对于 Ubuntu 方式,添加此DNSCrypt-PPA 请注意,此 PPA 已过时(13.10 的最新版本是 1.4.0),因此我们将从源安装
tar -xvjpf dnscrypt-proxy-1.4.1.tar.bz2 && cd dnscrypt-proxy-1.4.1 ./configure && make && sudo make install
由于我们删除了插件,我们需要从 GitHub Repo 重新下载 Zip 文件。我们创建的目录将被称为master
sudo apt-get install zip unzip
Tar 不会提取 zip,因此我们需要新工具。您可能已经拥有这些。unzip master.zip && cd master
解压缩文件后,转到文件夹并编辑
CMakeLists.txt
并添加以下行
include_directories(/home/cabox/workspace/dnscrypt-proxy-1.4.1/src/include) include_directories(/home/cabox/workspace/geoip-api-c-1.6.3/libGeoIP) include_directories(/home/cabox/workspace) /ldns-1.6.17/ldns)
然后,运行
cmake . && make cd .. && cp -v master/nameofplugin.ext /some/dir/where/you/store/plugins
为什么你的错误发生
DNSCrypt 的头文件仅在您成功编译 DNSCrypt 本身后plugin.h
才会安装。/usr/include/dnscrypt
您无法编译 DNSCrypt 有两个原因:
- 您没有源 tarball。
- 交叉制作,或 CMake简而言之,它是一个独立的构建系统,不使用标准的Linux构建过程。使用它的客户端包括 KDE 和 Poppler。
参考
- 根图用户。我们通常从源代码构建。事实上,每次更新。
- 乌班图EasyCompilingHOWTO