在Windows 10中从源代码构建taskwarior时缺少GNUTLS或libuuid



在过去的4天里,我一直在努力让taskwarrior和taskwarriors服务器在windows 10上运行。事实证明,这对我来说是一个相当大的挑战

我遵循了以下步骤:https://taskwarrior.org/docs/build.html并创建了一个文件夹:

C:taskwarrior

为VC 2017 打开开发者命令提示符

cd /d C:/taskwarrior
git clone https://github.com/GothenburgBitFactory/taskwarrior.git taskwarrior.git
cd taskwarrior.git
git checkout master

然后取决于我是否尝试在启用同步的情况下构建taskwarrior(除非手动禁用,否则自动):

cmake -DCMAKE_BUILD_TYPE=release .

GNUTLS_library缺少

或:

cmake -DCMAKE_BUILD_TYPE=release . -DENABLE_SYNC=OFF

--找不到libuuid。

到目前为止所采取的步骤和尝试的简短摘要:

  1. 已从以下位置下载并安装Microsoft Visual C++2017 Redistributable(x64和x86):https://visualstudio.microsoft.com/vs/features/cplusplus/
  2. 根据微软的文档中的建议,可以获得保证的cl:https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx
  3. 下载了MinGW安装管理器,并按照上的建议安装了基本软件包http://www.mingw.org/wiki/Getting_Started:

如果您确实希望安装mingw-get-inst.exe的强制集,(包括GNU C编译器、GNU调试器(GDB)和GNUmake工具),您应该选择mingw基本包进行安装。

  1. 从安装Cmakehttps://cmake.org/download/
  2. 在管理员模式下从cmd运行上述命令
  3. 打开Cmake选择源文件夹:

    C:/taskwarrior/taskwarrior.git

使用构建文件夹:

C:/taskwarrior

这给出了与我通过上面描述的VC 2017的开发者命令提示符尝试它时完全相同的错误,从中我得出结论,我在上面描述的命令中没有打字错误。

  1. 即使它应该已经与Mingw一起安装,GNU仍然找不到(即使在重新启动后)。所以我尝试从以下位置手动下载:
  2. http://gnuwin32.sourceforge.net/packages/make.htm
  3. https://sourceforge.net/projects/gnuwin32/

  4. 我在命令提示符下尝试了以下命令:

    install libgnutlsxx28 gnutls-devinstall gnutls-dev

  5. 正如taskwarrior中基于Debian的发行版的安装文件中所建议的那样,我尝试了:

    libgnutls-dev

    这打开了IncrediBuild 9.2.1版本的安装程序,我目前不知道它能做什么。

  6. 我尝试从以下位置下载libuuid库:https://sourceforge.net/projects/libuuid/但我目前不知道如何构建和安装它。

  7. 我试着通过cmd中的python安装它:

    easy_install python-libuuid

  8. 从以下源代码学习构建程序:https://msdn.microsoft.com/en-us/library/cyz1h6zd.aspx

  9. 学习和实践https://github.com/codebox/bitmeteros/wiki/How-to-build-on-Windows.
  10. 最后,我了解到我已经安装了Cygwin,我可以通过重新安装Cygwin并检查/标记任务包来安装旧版本的taskwarrior。所以我有taskwarrior在运行,但没有taskwarrio服务器。此外,我正在努力学习如何从源代码构建代码/项目,因此我正在努力进行成功的构建,以提高我的技能,从而提高工具集
  11. 安装GNU TLS 3.6.2的说明https://www.gnutls.org/manual/gnutls.html#Downloading-并且安装仅限于:

然后像许多其他使用Autoconf的包一样提取、配置和构建包。有关配置和构建它的详细信息,请参阅分发存档中的INSTALL文件。通常您会调用/配置,然后进行检查安装。

然而,最新的GNUTLS for Windows x64下载文件:gitlab上的最新w64版本:https://www.gnutls.org/download.html名为artifacts.zip的文件不包含名为INSTALL的文件。

因此,我目前正在了解如何使用autoconf进行配置和构建。

问题:你知道我如何在windows 10上安装GNU库和/或libuuid库吗

我不确定它是否仍然与您的问题有关,但我能够在64位cygwin(在Win7上)下构建taskwarrior v2.5.1,从这里使用cmake行:TW-1845 cygwin构建失败,缺少get_current_dir_name

也就是说,这条cmake线后面跟着make:

cmake -DHAVE_GET_CURRENT_DIR_NAME=0

我可能误解了上下文。GnuTLS似乎是一个适用于linux/debian操作系统的程序。

尽管如此,以下两种解决方案在中是有效的:

  1. 在Windows中查找和使用UUID库
  2. 解决XY问题并在"windows pc"上使用GnuTLS(带有Linux)。:

对于缺少UUID的库错误:

  1. 打开资源管理器>转到C:(或其他系统光盘)>搜索:uuid.lib>记住/任何uuid.lib文件的路径。(对我来说C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib worked)
  2. 打开Cmake,然后在UUID_LIBRARY_DIR中输入:
  3. C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib
  4. 然后在UUID_LIBRARY中输入:C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/Uuid.Lib在步骤1中,您将C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib替换为您自己找到的UUID.lib路径

这使得CMake克服了windows中的UUID错误。

现在对于GnuTLS,我在windows中找不到解决方案。但是,当我阅读以下内容的taskserver安装指南时:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/4/4我了解到Taskwarrior并不打算在Windows本身/本机上运行,而是在linux环境中运行(具体而言,建议将linux发行版Ubuntu安装在Windows上,如下所示:https://taskwarrior.org/download/)只需单击1次就可以完全下载并安装linux发行版(对我来说,它目前看起来像一个模拟器)。

在windows商店中,可以下载Ubuntu和其他Linux发行版作为Debian GNU/Linux:https://learn.microsoft.com/en-us/windows/wsl/install-win10.由于我在安装GnuTLS时遇到了一些困难,我尝试了debian GNU/Linux发行版,希望它能预装在发行版中。以下命令在debian GNU/Linux上成功安装了taskwarrior、GnuTLS和Taskserver:

  1. sudo apt-get update
  2. sudo apt-get install taskwarrior
  3. cd /home/a/
  4. 然后创建新目录"taskwarrior">
  5. mkdir taskwarrior
  6. cd /home/a/taskwarrior

    Debian中的任务服务器安装:

  7. sudo apt install g++

  8. sudo apt install libgnutls28-dev
  9. sudo apt install uuid-dev
  10. sudo apt install cmake
  11. **sudo apt install gnutls-utils**

gnutls失败,因此:

  1. **sudo apt-get update**
  2. **sudo apt install gnutls-utils**
  3. sudo apt-get update
  4. sudo apt-get install git-core

来源:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/6/1建议您输入:git clone --recurse-submodules=yes https://github.com/GothenburgBitFactory/taskserver.git taskserver.git给出以下错误:option递归子模块takes no value,因此将其重写为:

  1. git clone https://github.com/GothenburgBitFactory/taskserver.git taskserver.git

  2. cd taskserver.git/

  3. git checkout master

  4. cmake -DCMAKE_BUILD_TYPE=release .

  5. make

现在您可以测试构建,如中所述:https://gitpitch.com/GothenburgBitFactory/taskserver-setup#/6/8注意:SOURCEDIR现在是home/a/taskwarrior/taskserver.git(/test我目前不知道/test是源目录的子文件夹还是实际的源目录)

  1. sudo make install

注意:您可以使用验证GnuTLS安装

  1. task diagnostics | grep libgnutls
  2. sudo apt install taskd

未回答以上内容只回答了我的一半问题(并解决了XY问题)。GnuTLS在windows上的安装本身仍然没有解决。我目前不确定下载

GNU for windows

gitlab gnutls_3_6_0_1:mingw64 上的最新w64版本

https://gnutls.org/download.html.

  1. 它包含一个lib和一个bin文件夹,这似乎表明即使是在"windows"下列出的文件也适用于Linux操作系统(OS)(因为我认为这些类型的文件夹不是在windows中常规使用的/我不知道该怎么办/如何安装它们)
  2. 这意味着GnuTLS假设GnuTLS,即使在Windows操作系统上也发生在Linux中系统也可能只是我缺少关于如何在中使用/安装这些文件的知识/工作/理解窗口

因此,如果有人仍然能够回答如何在windows上应用GnuTLS,我将非常感谢您的见解!

最新更新