2

I did a source install of Sendmail 8.14.4, and BerkeleyDB.4.1 in ubuntu14.04lts Amazon EC2. The installation was successfully compiled, as far as I know. With the installation of the source, I made ​​a copy to /usr/sbin/sendmail the new version of sendmail using the command cp.

But I can't find the sendmail file (below refer). There is no executable file..

root@ip-192-168-10-152:/usr/local/sendmail/sendmail-8.14.4/obj.Linux.3.13.0-24-generic.x86_64/sendmail# ll sendmail*

lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.0.dist -> ../../sendmail/sendmail.0    
lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.8 -> ../../sendmail/sendmail.8    
lrwxrwxrwx 1 root root 25 Jun 30 08:15 sendmail.h -> ../../sendmail/sendmail.h

Is it not compiled properly? Why is it?

==========The environment set at compile ==============

root@ip-192-168-10-152:/usr/local/sendmail/sendmail-8.14.4/devtools/Site# cat site.config.m4

APPENDDEF(`confINCDIRS', `-I/usr/local/BerkeleyDB.4.1/include')    
APPENDDEF(`confLIBDIRS', `-L/usr/local/BerkeleyDB.4.1/lib')    
APPENDDEF(`confLIBS', `-ldb -lpthread')

==========================================================

EDIT #1

I'm assume all binary files compiled successfully, except for the sendmail binary.

root@ip-192-168-10-172:/usr/local/sendmail/sendmail-8.14.9/sendmail# ./makesendmail

Configuration: pfx=, os=Linux, rel=3.2.0-58-virtual, rbase=3, rroot=3.2, arch=x86_64, sfx=, variant=optimized
Making in /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/sendmail
cc -o sendmail  -L/usr/local/BerkeleyDB.4.1/lib main.o alias.o arpadate.o bf.o collect.o conf.o control.o convtime.o daemon.o deliver.o domain.o envelope.o err.o headers.o macro.o map.o mci.o milter.o mime.o parseaddr.o queue.o ratectrl.o readcf.o recipient.o sasl.o savemail.o sfsasl.o shmticklib.o sm_resolve.o srvrsmtp.o stab.o stats.o sysexits.o timers.o tls.o trace.o udb.o usersmtp.o util.o version.o      /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/libsmutil/libsmutil.a /usr/local/sendmail/sendmail-8.14.9/obj.Linux.3.2.0-58-virtual.x86_64/libsm/libsm.a  -ldb -ldl -ldb -lpthread

domain.o: In function `getmxrr':    
domain.c:(.text+0x1f0): undefined reference to `__res_search'    
domain.c:(.text+0x200): undefined reference to `__res_query'    
domain.c:(.text+0x2a5): undefined reference to `__dn_skipname'    
domain.c:(.text+0x4f4): undefined reference to `__dn_expand'    
domain.c:(.text+0x5be): undefined reference to `__dn_expand'    
domain.o: In function `dns_getcanonname':    
domain.c:(.text+0x1017): undefined reference to `__res_querydomain'    
domain.c:(.text+0x10ab): undefined reference to `__dn_skipname'    
domain.c:(.text+0x1213): undefined reference to `__dn_expand'    
domain.c:(.text+0x12a1): undefined reference to `__dn_expand'    
sm_resolve.o: In function `dns_lookup_int':    
sm_resolve.c:(.text+0x21d): undefined reference to `__res_search'    
sm_resolve.c:(.text+0x313): undefined reference to `__dn_expand'    
sm_resolve.c:(.text+0x42e): undefined reference to `__dn_expand'    
sm_resolve.c:(.text+0x598): undefined reference to `__dn_expand'    
sm_resolve.c:(.text+0x6d8): undefined reference to `__dn_expand'    
sm_resolve.c:(.text+0x799): undefined reference to `__dn_expand'    
sm_resolve.c:(.text+0x99f): undefined reference to `__res_search'    
collect2: ld returned 1 exit status    
make: *** [sendmail] Error 1
slm
  • 369,824

1 Answers1

1

I would double check the output of make when you built it for warnings or errors. If there is no binary of sendmail present then it didn't build properly. Also look for sendmail using find within the source tree. Often times binaries are put into a different directory.

$ find . -type f | grep sendmail$

Compilation issues

Based on your newest edit these 2 lines are telling you that your compilation failed.

collect2: ld returned 1 exit status    
make: *** [sendmail] Error 1

You'll need to figure out why these errors are occurring before you can worry about finding the resulting binary, sendmail. You're not finding it because it doesn't exist yet.

slm
  • 369,824
  • I had no problem when compiling.

    How do you determine a compilation of normal useless ? debuging file is not the remain ?

    ======================================================== root@ip-192-168-10-152:~# find . -type f | grep sendmail$ no output

    ========================================================

    – user3792248 Jul 03 '14 at 00:45
  • @user3792248 - at this point I would look at the Makefile to see what targets it's being asked to build. It's entirely possible that there is no executable actually called sendmail, often times there is a single executable with symbolic links to it. The executable when called interrogates the name of the link that it was called w/ and then behaves differently based on this name. See this Q&A for an example: http://unix.stackexchange.com/questions/77029/why-are-reboot-shutdown-and-poweroff-symlinks-to-systemctl/77030#77030 – slm Jul 03 '14 at 01:31
  • to slm. please see below words – user3792248 Jul 03 '14 at 02:46
  • @user3792248 - the output you provided is definitely not compiling successfully as you thought. Your issue is with the compilation, that's why you're not finding the sendmail executable. You'll need to resolve the compilation first. – slm Jul 03 '14 at 08:46