【问题标题】:Using the (antiquated) C crypt() method for homework - the compiler won't link?使用(过时的)C crypt() 方法做作业 - 编译器不会链接?
【发布时间】:2023-05-16 13:52:01
【问题描述】:

全部:

我应该在家庭作业中使用 crypt() 函数。这是一种旧的 C 方法,可能非常不安全,但它只是用于演示目的。

唯一的问题,我不知道如何使用 dang 功能。我在 Ubuntu 上使用 CLion 作为我的 IDE。它应该在 中定义,但我无法编译这个东西。 crypt() 函数在构建项目后出现“未定义引用”错误。不过,我知道它是这两个库之一 - 那么怎么了?链接到该库或其他东西有问题吗?我已经阅读并遇到了“使用 -lcrypt”,但我不完全确定在 CLion 中如何处理它。唯一的解释是涉及 make 文件。其中,不适用于我(或者他们适用,我不知道它是如何相关的)。也没有太多关于它的文档,因为这个函数已经过时了。

谢谢大家。

编辑: 谢谢,尤金!我想我想通了这一点。 . .

target_link_libraries(CryptExample -lcrypt)

在 CMake 文件中。

【问题讨论】:

  • 所以你真正的问题是“如何与 CLion 中的特定库链接?”。这就是您需要搜索的内容
  • 嘿,尤金。我认同;我一直在网上搜索这个主题。问题是,我不知道“crypt”库的确切名称以及如何在 CLion 的上下文中使用它。到目前为止,我已经找到了:target_link_libraries( x ... ),但是我到底怎么称呼这个库本身呢?谢谢,尤金。
  • 与其用答案更新您的问题,不如将其发布为您问题的答案。
  • 对不起,杰瑞。这个董事会的新手。我会这样做。
  • 在一些较新的系统版本上,它可能是 -lxcrypt 和不同的函数 - crypt_r ,因为 libcrypt 计划在 2018 年删除所有不安全的函数(它们不是线程安全的)

标签: c++ c c++11 clion crypt


【解决方案1】:

对于将来偶然发现此问题的任何人,添加

target_link_libraries(CryptExample -lcrypt)

到 CLion IDE 中的 CMakeLists.txt。它应该放在 add_executable(. . .) 行下。将“CryptExample”替换为您为项目命名的任何名称。

【讨论】: