6

I moved from Archlinux to Kubuntu 12.04 yesterday.

I compiled buildroot 2012.08 on Archlinux without any problem. Though on Kubuntu libcrypt seems to be broken. sysvinit can't find it anywhere. glibc-dev and all dependencies are installed.

How do I link to libcrypt? Or, which package containts that library?

...
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

3 Answers 3

9

Try adding '-lcrypt' after any objects used in linking; I've had a couple of instances where gcc would complain about crypt if -lcrypt wasn't near the end of the link list.

In other words, try something like:

gcc -D FOO -D BAR -W -Wall -pedantic -O2 foo.o bar.o -lnsl -lcrypt -o baz

as opposed to

gcc -D FOO -D BAR -W -Wall -pedantic -O2 -lnsl -lcrypt foo.o baz.o -o baz
4

undefined reference to 'crypt' is a linker error.

Try linking with -lcrypt : gcc ....-lcrypt

1
  • 2
    No. It tries to link, but can't. Configuration script changes linkage options. Specifically buildroot sets variable LCRYPT="-lcrypt"
    – sorush-r
    Sep 28, 2012 at 9:57
0

For those of you using super-auto-magical CMAKE like me, try to add

target_link_libraries(your_binary_name PRIVATE libcrypt.so)

to your CMakeLists.txt

Alternatively, replace PRIVATE for PUBLIC as needed..


If you have well established paths to libraries (e.g. all needed libs in /usr/lib), you may be fine with just stating in CMakeLists.txt:

set(CMAKE_CXX_FLAGS "-lcrypt")

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .