我想手动编译登录命令(使用精确的 CC 和 LD 命令)。
https://packages.ubuntu.com/groovy/login
/tmp/shadow_4.8.1.orig/src$ make VERBOSE=1
CC login.o
CCLD login
上述命令未显示确切的命令。当我运行以下命令时,我看到以下错误。
$ gcc -o login login.c
login.c:33:10: fatal error: config.h: No such file or directory
33 | #include <config.h>
| ^~~~~~~~~~
compilation terminated.
有人能告诉我如何获取用于编译程序登录的确切命令吗?谢谢。
答案1
在这种情况下,如果构建由 配置automake
,则V=1
不需要VERBOSE=1
:
$ make V=1 login
gcc -DHAVE_CONFIG_H -I. -I.. -I../lib -I../libmisc -DLOCALEDIR=\"/usr/share/locale\" -g -O2 -MT login.o -MD -MP -MF .deps/login.Tpo -c -o login.o login.c
login.c: In function ‘alarm_handler’:
login.c:424:2: warning: ignoring return value of ‘write’, declared with attribute warn_unused_result [-Wunused-result]
424 | write (STDERR_FILENO, tmsg, strlen (tmsg));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mv -f .deps/login.Tpo .deps/login.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I../lib -I../libmisc -DLOCALEDIR=\"/usr/share/locale\" -g -O2 -MT login_nopam.o -MD -MP -MF .deps/login_nopam.Tpo -c -o login_nopam.o login_nopam.c
login_nopam.c: In function ‘netgroup_match’:
login_nopam.c:198:3: warning: ignoring return value of ‘getdomainname’, declared with attribute warn_unused_result [-Wunused-result]
198 | getdomainname (domain, MAXHOSTNAMELEN);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mv -f .deps/login_nopam.Tpo .deps/login_nopam.Po
/bin/bash ../libtool --tag=CC --mode=link gcc -g -O2 -o login login.o login_nopam.o ../libmisc/libmisc.a ../lib/libshadow.la -lcrypt
libtool: link: gcc -g -O2 -o login login.o login_nopam.o ../libmisc/libmisc.a ../lib/.libs/libshadow.a -lcrypt
要构建整个包,请切换到src
目录的父目录并运行
./configure
make
也可以看看: