indicator-printers fails to build- /usr/bin/ld: cannot find -ldbusmenu-glib-lcups

Asked by Michael Healy on 2015-11-01

I am attempting to build indicator-printers using Arch Linux. My build fails with /usr/bin/ld: cannot find -ldbusmenu-glib-lcups. I have searched for this on the internet, but I have been unable to find a file with that name. My output for ld -ldbusmenu-glib-lcups is as follows:

attempt to open /usr/x86_64-unknown-linux-gnu/lib64/libdbusmenu-glib-lcups.so failed
attempt to open /usr/x86_64-unknown-linux-gnu/lib64/libdbusmenu-glib-lcups.a failed
attempt to open /usr/lib/libdbusmenu-glib-lcups.so failed
attempt to open /usr/lib/libdbusmenu-glib-lcups.a failed
attempt to open /usr/local/lib/libdbusmenu-glib-lcups.so failed
attempt to open /usr/local/lib/libdbusmenu-glib-lcups.a failed
attempt to open /usr/x86_64-unknown-linux-gnu/lib/libdbusmenu-glib-lcups.so failed
attempt to open /usr/x86_64-unknown-linux-gnu/lib/libdbusmenu-glib-lcups.a failed
ld: cannot find -ldbusmenu-glib-lcups

I can find libdbusmenu-glib, but not libdbusmenu-glib-lcups.so or libdbusmenu-glib-lcups.a. What package provides those files?

Here is the output of my build:

makepkg
==> Making package: indicator-printers 1:0.1.7.15.04.20150220-2 (Sun Nov 1 00:35:57 PDT 2015)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found indicator-printers_0.1.7+15.04.20150220.orig.tar.gz
  -> Found indicator-printers_0.1.7+15.04.20150220-0ubuntu1.diff.gz
==> Validating source files with sha512sums...
    indicator-printers_0.1.7+15.04.20150220.orig.tar.gz ... Passed
    indicator-printers_0.1.7+15.04.20150220-0ubuntu1.diff.gz ... Passed
==> Extracting sources...
  -> Extracting indicator-printers_0.1.7+15.04.20150220.orig.tar.gz with bsdtar
  -> Extracting indicator-printers_0.1.7+15.04.20150220-0ubuntu1.diff.gz with gzip
==> Starting prepare()...
patching file debian/changelog
patching file debian/compat
patching file debian/control
patching file debian/copyright
patching file debian/indicator-printers.install
patching file debian/local/ubuntu-mono-dark/status/16/printer-symbolic.svg
patching file debian/local/ubuntu-mono-dark/status/22/printer-symbolic.svg
patching file debian/local/ubuntu-mono-dark/status/24/printer-symbolic.svg
patching file debian/local/ubuntu-mono-light/status/16/printer-symbolic.svg
patching file debian/local/ubuntu-mono-light/status/22/printer-symbolic.svg
patching file debian/local/ubuntu-mono-light/status/24/printer-symbolic.svg
patching file debian/rules
patching file debian/source/format
patching file debian/watch
==> Starting build()...
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ([^ \t=:+{}]+)}/ at /usr/bin/automake line 3936.
configure.ac:7: installing './compile'
configure.ac:9: installing './config.guess'
configure.ac:9: installing './config.sub'
configure.ac:5: installing './install-sh'
configure.ac:5: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am: installing './COPYING' using GNU General Public License v3 file
Makefile.am: Consider adding the COPYING file to the version control system
Makefile.am: for your code, to avoid questions about which license your project uses
src/Makefile.am: installing './depcomp'
autoreconf: Leaving directory `.'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... no
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... no
checking if : is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking whether make supports nested variables... (cached) yes
checking whether NLS is requested... yes
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/^(.*)\${ <-- HERE ?([A-Z_]+)}?(.*)$/ at /usr/bin/intltool-update line 1065.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?AC_PACKAGE_NAME}?/ at /usr/bin/intltool-update line 1193.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?PACKAGE}?/ at /usr/bin/intltool-update line 1194.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?AC_PACKAGE_VERSION}?/ at /usr/bin/intltool-update line 1195.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?VERSION}?/ at /usr/bin/intltool-update line 1196.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?AC_PACKAGE_NAME}?/ at /usr/bin/intltool-update line 1222.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?PACKAGE}?/ at /usr/bin/intltool-update line 1223.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?AC_PACKAGE_VERSION}?/ at /usr/bin/intltool-update line 1224.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?VERSION}?/ at /usr/bin/intltool-update line 1225.
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/\${ <-- HERE ?\w+}?/ at /usr/bin/intltool-update line 1226.
checking for intltool >= 0.35.0... 0.51.0 found
checking for intltool-update... /usr/bin/intltool-update
checking for intltool-merge... /usr/bin/intltool-merge
checking for intltool-extract... /usr/bin/intltool-extract
checking for xgettext... /usr/bin/xgettext
checking for msgmerge... /usr/bin/msgmerge
checking for msgfmt... /usr/bin/msgfmt
checking for gmsgfmt... /usr/bin/msgfmt
checking for perl... /usr/bin/perl
checking for perl >= 5.8.1... 5.22.0
checking for XML::Parser... ok
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for LC_MESSAGES... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes
checking for ngettext in libc... yes
checking for dgettext in libc... yes
checking for bind_textdomain_codeset... yes
checking for msgfmt... (cached) /usr/bin/msgfmt
checking for dcgettext... yes
checking if msgfmt accepts -c... yes
checking for gmsgfmt... (cached) /usr/bin/msgfmt
checking for xgettext... (cached) /usr/bin/xgettext
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for APPLET... yes
checking for SERVICE... yes
checking for cups-config... /usr/bin/cups-config
checking cups/cups.h usability... yes
checking cups/cups.h presence... yes
checking for cups/cups.h... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating data/Makefile
config.status: creating data/upstart/Makefile
config.status: creating test/Makefile
config.status: creating po/Makefile.in
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
config.status: executing default-1 commands
config.status: executing po/stamp-it commands
make all-recursive
make[1]: Entering directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220'
Making all in src
make[2]: Entering directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220/src'
gdbus-codegen \
    --interface-prefix org.cups.cupsd \
    --c-namespace Cups \
    --generate-c-code cups-notifier \
    org.cups.cupsd.Notifier.xml
make all-am
make[3]: Entering directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220/src'
  CC libprintersmenu_la-indicator-printers.lo
  CC libprintersmenu_la-indicator-menu-item.lo
indicator-menu-item.c: In function ‘gtk_widget_get_font_size’:
indicator-menu-item.c:54:5: warning: ‘gtk_style_context_get_font’ is deprecated: Use 'gtk_style_context_get' instead [-Wdeprecated-declarations]
     font = gtk_style_context_get_font (gtk_widget_get_style_context (widget),
     ^
In file included from /usr/include/gtk-3.0/gtk/gtkicontheme.h:27:0,
                 from /usr/include/gtk-3.0/gtk/gtk.h:120,
                 from indicator-menu-item.h:22,
                 from indicator-menu-item.c:19:
/usr/include/gtk-3.0/gtk/gtkstylecontext.h:1170:6: note: declared here
      gtk_style_context_get_font (GtkStyleContext *context,
      ^
  CCLD libprintersmenu.la
  CC indicator_printers_service-indicator-printers-service.o
indicator-printers-service.c: In function ‘main’:
indicator-printers-service.c:150:5: warning: implicit declaration of function ‘bindtextdomain’ [-Wimplicit-function-declaration]
     bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
     ^
indicator-printers-service.c:151:5: warning: implicit declaration of function ‘bind_textdomain_codeset’ [-Wimplicit-function-declaration]
     bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
     ^
indicator-printers-service.c:152:5: warning: implicit declaration of function ‘textdomain’ [-Wimplicit-function-declaration]
     textdomain (GETTEXT_PACKAGE);
     ^
  CC indicator_printers_service-indicator-printers-menu.o
  CC indicator_printers_service-indicator-printer-state-notifier.o
indicator-printer-state-notifier.c: In function ‘show_alert_box’:
indicator-printer-state-notifier.c:132:29: warning: ‘GtkStock’ is deprecated [-Wdeprecated-declarations]
                             GTK_STOCK_OK, GTK_RESPONSE_OK,
                             ^
  CC indicator_printers_service-spawn-printer-settings.o
  CC indicator_printers_service-cups-notifier.o
  CCLD indicator-printers-service
/usr/bin/ld: cannot find -ldbusmenu-glib-lcups
collect2: error: ld returned 1 exit status
Makefile:554: recipe for target 'indicator-printers-service' failed
make[3]: *** [indicator-printers-service] Error 1
make[3]: Leaving directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220/src'
Makefile:432: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220/src'
Makefile:446: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/mike/Unity-for-Arch/indicator-printers/src/indicator-printers-0.1.7+15.04.20150220'
Makefile:377: recipe for target 'all' failed
make: *** [all] Error 2
==> ERROR: A failure occurred in build().
    Aborting...

I'd be grateful for any help you could give. I'm an avid Arch user that loves Unity, and I'm trying to build Unity from source. I'm stuck on this file, and I'm hoping someone can point me in the right direction!

Question information

Language:
English Edit question
Status:
Solved
For:
Ubuntu indicator-printers Edit question
Assignee:
No assignee Edit question
Solved by:
Michael Healy
Solved:
2015-11-14
Last query:
2015-11-14
Last reply:
2015-11-11

Okay, I think I found the cause- when the build fails, I take a look at the Makefile. On line 312 for SERVICE_LIBS, all of the needed libs are listed. Towards the end, column 160, -ldbusmenu-glib-lcups is listed. Shouldn't it read -ldbusmenu-glib -lcups? I see all the library files on my PC under /usr/lib. I do not see -ldbusmenu-glib-lcups, but it seems to me that all the library files start with -l. I've been searching for a way to fix this problem, but I have been unable to do so. Can someone help me please?

Manfred Hampl (m-hampl) said : #2

It seems that there is really a space character missing. If you modify the makefile and try building the package again, what is the result?

Thanks for your reply, Manfred. I did try to edit the makefile located in the Ubuntu packages, but when I would save them and try to rebuild the package, the makefile gets re-written. The makefile is created by a couple of other files contained in the Ubuntu packages, but I've been unable to locate the file(s) where the SERVICE_LIBS are generated. While I was poking around, I found that I could use configure to call the SERVICE_LIBS in my PKGBUILD file. I copied the SERVICE_LIBS portion of the makefile, then edited my PKGBUILD with that information. After several failed attempts (that were due to my lack of knowledge of how to use configure correctly), what I found was that the SERVICE_LIBS I was calling with configure were getting into the makefile properly, but somehow somewhere another file was adding a few more libraries to the SERVICE_LIBS section in the makefile. For some reason there was no space in between the last SERVICE_LIBS file I called and the ones that were added. The result was that the last SERVICE_LIBS library file I called ALWAYS ended with -lcups. Once I figured that out, I put another backslash in my configure file and was able to build the file successfully. My question now- is this specific to Arch Linux, or can I recreated the same issue in Ubuntu or some other distribution? I do not have Ubuntu installed anywhere right at the moment, but I will install 14.04 in the near future (the next few days) and try to build indicator-printers in it. If I have the same problem, then I probably should file a bug report.

Manfred Hampl (m-hampl) said : #4

I am not sure whether I am able to answer your question.

There is quite a difference between Ubuntu and Arch Linux.
For Ubuntu the packages are distributed in binary format, so usually there is no need that you have to compile anything locally. An error in the makefile (or config scripts or...) would only affect the central building of the package, but not the end user.
Arch Linux's standards (as far as I am aware) is to compile and build software on your own system, thus any makefile error will pop up at the end user's system.

I dug into the source, and I think I spotted the file where the problematic expression is.

configure.ac line ~55:
SERVICE_LIBS+=`$CUPS_CONFIG --libs`
If you change this line into
SERVICE_LIBS += `$CUPS_CONFIG --libs`
does it then work?

Or, which change have you made?

Thank you very much for your reply! I certainly agree that Arch and Ubuntu are very different. I used Ubuntu for several years before switching to Arch. I have been using Unity on Arch now for quite some time, but the repo maintainer for Unity-for-Arch hasn't done any work on those files for quite some time, and the Arch update to GNOME 3.18 breaks Unity. My quest is to build the required packages from source and get Unity working on Arch again. My Arch PKGBUILD file just points to the build files contained in the Ubuntu source files and tells them to build from there. I will create a patch for configure.ac with your suggested edits, update my PKGBUILD file, and see if it builds correctly. I'll let you know what happens. I'll try it on Ubuntu as well once I get it installed. If the problem does occur in both Arch and Ubuntu, should I file a bug report, or are you able to fix the source package yourself?

Manfred Hampl (m-hampl) said : #6

First it has to be tested whether adding space characters really matters (I haven't tested this myself).

It this helps, then please file a bug report.

Thanks for your reply, again. I tested your suggestion, and the package does indeed build correctly with the space added into the configure.ac file. This separates -lcups from the previous library files- I verified it in the makefile generated by configure.ac. Now there are library files that are repeated in the SERVICE_LIBS area. Here's the SERVICE_LIBS portion of the makefile, just so you can see what I'm talking about:

SERVICE_LIBS = -lindicator3 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -ldbusmenu-glib -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lpthread -lm -lcrypt -lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lpthread -lm -lcrypt -lz

As you can see, after the first instance of -lcups, it repeats the exact same libraries again. While it is odd, it doesn't stop the file from building correctly. Should I go ahead and file the bug report off of what I'm experiencing on Arch, or should I try to build the package on Ubuntu (or some other Linux distro) to see if the problem still occurs?

Oops, I spoke too soon. I built the package with the old PKGBUILD file, so of COURSE it built correctly with the repetitive libraries I showed. I tried your suggestion, and it spit out all kinds of errors. I took a look at the makefile and found that the SERVICE_LIBS section was missing all the libraries from -lcups and after. I edited my PKGBUILD, called just the SERVICE_LIBS prior to -lcups, and it built correctly. I'm not sure what's calling the extra libraries, but somewhere something is adding -lcups, -lgssapit_krb5, -lkrb5, -lk5crypto, lcom_err, -lz, -lpthread, -lm, and -lcrypt. It's also adding an additional -lz to the end. I didn't expressly call those SERVICE_LIBS in my PKGBUILD, so they've got to be coming from the source files somewhere. I'm going to paste my PKGBUILD here so that you can see what I'm calling.

Here's my PKGBUILD file that correctly builds:

 # Maintainer: Xiao-Long Chen <email address hidden>
# Contributor: Michael Healy <email address hidden>

# vercheck-pkgbuild: auto
# vercheck-ubuntu: name=${pkgname}, repo=wily
# vercheck-launchpad: name=${pkgname}

pkgname=indicator-printers
_ubuntu_rel=0ubuntu1
_actual_ver=0.1.7
_extra_ver=+15.04.20150220
pkgver=${_actual_ver}${_extra_ver/\+/.}
pkgrel=2
epoch=1
pkgdesc="Indicator showing active print jobs"
arch=(i686 x86_64)
url="https://launchpad.net/indicator-printers"
license=(GPL)
groups=(unity)
depends=(cups libdbusmenu-glib libdbusmenu-gtk3 libindicator3)
makedepends=(intltool python2)
source=("https://launchpad.net/ubuntu/+archive/primary/+files/indicator-printers_${_actual_ver}${_extra_ver}.orig.tar.gz"
        "https://launchpad.net/ubuntu/+archive/primary/+files/indicator-printers_${_actual_ver}${_extra_ver}-${_ubuntu_rel}.diff.gz")
sha512sums=('c4aff3d515d64c78085175c5ff807b32c3fcc501dc879247a34545cdfc25d45d445fe7c56b661ce03953020246960b3c55110a44d015807abad9cc90b9c2198d'
            '2ed2e49bc6a04ea02a7feb229690938aec48a0b4389534a64b95fdbef61bfd0ea3ab0645fc4d8145c5a3c4feca81d83f2beb39a2ab374f088c59efd14108cd89')

prepare() {
  cd "${pkgname}-${_actual_ver}${_extra_ver}"

  # Apply Ubuntu's patches
  patch -p1 -i ../indicator-printers_${_actual_ver}${_extra_ver}-${_ubuntu_rel}.diff

}

build() {
  cd "${pkgname}-${_actual_ver}${_extra_ver}"

  autoreconf -vfi
  intltoolize -f
  ./configure --prefix=/usr --libexecdir=/usr/lib/${pkgname} --disable-static \
  SERVICE_LIBS=-lindicator3\ -lgtk-3\ -lgdk-3\ -lpangocairo-1.0\ -lpango-1.0\ -latk-1.0\ -lcairo-gobject\ -lcairo\ -lgdk_pixbuf-2.0\ -lgio-2.0\ -lgobject-2.0\ -lglib-2.0\ -ldbusmenu-glib\
  make
}

package() {
  cd "${pkgname}-${_actual_ver}${_extra_ver}"

  make DESTDIR="${pkgdir}/" install

  rm -r "${pkgdir}/usr/share/upstart/"
}

If you take out the call for SERVICE_LIBS in the configure section of my PKGBUILD, the build fails with the error listed in the original post.

The only difference that the change in my PKGBUILD makes is the separation of -ldbusmenu-glib and -lcups, which allows the package to build. Can you think of anything else that would cause the additional libraries to be added without that space?

Manfred Hampl (m-hampl) said : #9

Sorry, but this goes beyond my knowledge about development and packaging.
I think you better create a bug report that the developers have a look into it.

Just one last detail, what is the output of

cups-config --version
cups-config --libs

Just for your information, I just built indicator-printers on a new install of Ubuntu 15.10 with no problems. There's something that Arch is doing that is creating the problem. I'm going to do some poking around to see if I can discover the problem. I'll get the output you asked for here shortly.

Sorry it took me so long to get the output to you, but here it is:

cups-config --version
2.1.0

cups-config --libs
-lcups -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lz -lpthread -lm -lcrypt -lz

Those library files are the ones that get added on to the end of the SERVICE_LIBS section of the makefile. Somehow, the build file isn't putting a space where there needs to be one. I'll dig around and see what I can come up with... thanks for your help. Since I built it successfully on Ubuntu, there's no reason to file a bug report. Thanks for all the time you put into helping me find an answer!