libc 的奇怪问题:对“crypt”的未定义引用

sor*_*h-r 5 compiling libraries

我昨天从 Archlinux 迁移到了 Kubuntu 12.04。

我在 Archlinux 上编译了 buildroot 2012.08 没有任何问题。虽然在 Kubuntu 上libcrypt似乎坏了。sysvinit在任何地方都找不到它。glibc-dev并安装了所有依赖项。

我如何链接到libcrypt?或者,哪个包包含该库?

...
bc-gcc   sulogin.o    -o sulogin
sulogin.o: In function `main':
sulogin.c:(.text+0x49d): undefined reference to `crypt'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

小智 8

尝试在链接中使用的任何对象之后添加“-lcrypt”;我有几个例子,如果 -lcrypt 不在链接列表的末尾附近,gcc 会抱怨 crypt。

换句话说,请尝试以下操作:

gcc -D FOO -D BAR -W -Wall -pedantic -O2 foo.o bar.o -lnsl -lcrypt -o baz
Run Code Online (Sandbox Code Playgroud)

gcc -D FOO -D BAR -W -Wall -pedantic -O2 -lnsl -lcrypt foo.o baz.o -o baz
Run Code Online (Sandbox Code Playgroud)


小智 4

对“crypt”的未定义引用是链接器错误。

尝试使用 -lcrypt 链接:gcc ....-lcrypt

  • 不。它尝试链接,但无法链接。配置脚本更改链接选项。具体来说 `buildroot` 设置变量 `LCRYPT="-lcrypt"` (2认同)