On 03/06/2012 08:00 PM, David C. Rankin wrote:
On 03/06/2012 07:37 PM, David C. Rankin wrote:
On 03/06/2012 07:09 PM, Darrell Anderson wrote:
Ran into another issue with tdegraphics that I can't solve by a dependency review:
[ 31%] Building CXX object libkscan/CMakeFiles/kscan-shared.dir/imgscaninfo.cpp.o Linking CXX shared library libkscan.so /usr/bin/ld: cannot find -lsane-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu-L/usr/lib collect2: ld returned 1 exit status make[2]: *** [libkscan/libkscan.so.1.0.0] Error 1 make[1]: *** [libkscan/CMakeFiles/kscan-shared.dir/all] Error 2 make: *** [all] Error 2
Is this a CMake issue? Linker error? What to look for?
Do you have SANE installed?
Check your build log for the following:
-- checking for 'libkscan' -- ok, activated for build
Check your CMakeCache.txt for this:
//Build libkscan BUILD_LIBKSCAN:BOOL=ON
Darrell
Hmm... yes on both accounts:
-- checking for 'libkscan' -- ok, activated for build
[19:35 providence:/home/david/bld/david/build/src/build] # grep -i libkscan CMakeCache.txt //Build libkscan BUILD_LIBKSCAN:BOOL=ON libksane_BINARY_DIR:STATIC=/build/src/build/libkscan libksane_SOURCE_DIR:STATIC=/build/src/tdegraphics/libkscan
Is this a new gcc issue? I have gcc 4.6.2-7... How would I check?
I cannot read cmake very well, but it looks like it gets to about line 584 in libkscan/CMakeFiles/kscan-shared.dir/build.make:
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold
"Linking CXX shared library libkscan.so" cd /build/src/build/libkscan && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/kscan-shared.dir/link.txt --verbose=$(VERBOSE) cd /build/src/build/libkscan && $(CMAKE_COMMAND) -E cmake_symlink_library libkscan.so.1.0.0 libkscan.so.1 libkscan.so
libkscan/libkscan.so.1: libkscan/libkscan.so.1.0.0
libkscan/libkscan.so: libkscan/libkscan.so.1.0.0
Because it gets to:
[ 31%] Building CXX object libkscan/CMakeFiles/kscan-shared.dir/imgscaninfo.cpp.o
Then dies. Any ideas?
I think I'm getting closer to at least finding where things are going wrong. Can someone confirm the order that the build system will go though the files in the libkscan/CMakeFiles/kscan-shared.dir? I don't know how the intricacies work, but it looks like it works something like this:
chroot/david/build/src/build/libkscan> ll CMakeFiles/ total 12 drwxr-xr-x 2 nobody nobody 4096 Mar 6 19:35 kscan-shared.dir -rw-r--r-- 1 nobody nobody 970 Mar 6 19:30 CMakeDirectoryInformation.cmake -rw-r--r-- 1 nobody nobody 2 Mar 6 19:30 progress.marks
Path information is set from CMakeDirectoryInformation.cmake
21:27 nirvana:/mnt/nv1/home/chroot/david/build/src/build/libkscan> cat CMakeFiles/CMakeDirectoryInformation.cmake # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 2.8
# Relative path conversion top directories. SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/build/src/tdegraphics") SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/build/src/build")
# Force unix paths in dependencies. SET(CMAKE_FORCE_UNIX_PATHS 1)
# The C and CXX include file search paths: SET(CMAKE_C_INCLUDE_PATH "libkscan" "/build/src/tdegraphics/libkscan" "/opt/trinity/include" "/opt/tqt3/include" "/opt/trinity/include/tqt" ) <snip>
Then it drops into the CMakeFiles/kscan-shared.dir
chroot/david/build/src/build/libkscan> ll CMakeFiles/kscan-shared.dir/ total 1616 -rw-r--r-- 1 nobody nobody 50066 Mar 6 19:30 build.make -rw-r--r-- 1 nobody nobody 1420 Mar 6 19:30 cmake_clean.cmake -rw-r--r-- 1 nobody nobody 42307 Mar 6 19:35 CXX.includecache -rw-r--r-- 1 nobody nobody 2830 Mar 6 19:30 DependInfo.cmake -rw-r--r-- 1 nobody nobody 73257 Mar 6 19:35 depend.internal -rw-r--r-- 1 nobody nobody 186988 Mar 6 19:35 depend.make -rw-r--r-- 1 nobody nobody 58224 Mar 6 19:35 devselector.cpp.o -rw-r--r-- 1 nobody nobody 24008 Mar 6 19:35 dispgamma.cpp.o -rw-r--r-- 1 nobody nobody 579 Mar 6 19:30 flags.make -rw-r--r-- 1 nobody nobody 32848 Mar 6 19:35 gammadialog.cpp.o -rw-r--r-- 1 nobody nobody 118000 Mar 6 19:35 img_canvas.cpp.o -rw-r--r-- 1 nobody nobody 38912 Mar 6 19:35 imgscaledialog.cpp.o -rw-r--r-- 1 nobody nobody 3696 Mar 6 19:35 imgscaninfo.cpp.o -rw-r--r-- 1 nobody nobody 22728 Mar 6 19:35 kgammatable.cpp.o -rw-r--r-- 1 nobody nobody 178736 Mar 6 19:35 kscandevice.cpp.o -rw-r--r-- 1 nobody nobody 144720 Mar 6 19:35 kscanoption.cpp.o -rw-r--r-- 1 nobody nobody 47176 Mar 6 19:35 kscanoptset.cpp.o -rw-r--r-- 1 nobody nobody 88552 Mar 6 19:35 kscanslider.cpp.o -rw-r--r-- 1 nobody nobody 1742 Mar 6 19:30 link.txt -rw-r--r-- 1 nobody nobody 33712 Mar 6 19:35 massscandialog.cpp.o -rw-r--r-- 1 nobody nobody 119280 Mar 6 19:35 previewer.cpp.o -rw-r--r-- 1 nobody nobody 668 Mar 6 19:30 progress.make -rw-r--r-- 1 nobody nobody 78328 Mar 6 19:35 scandialog.cpp.o -rw-r--r-- 1 nobody nobody 169960 Mar 6 19:35 scanparams.cpp.o -rw-r--r-- 1 nobody nobody 45992 Mar 6 19:35 scansourcedialog.cpp.o -rw-r--r-- 1 nobody nobody 31688 Mar 6 19:35 sizeindicator.cpp.o
Where it then reads the 'flags.txt, does make for 'build.make' and then uses 'link.txt' for the linker. In this process, 'flags.txt' looks to have the correct include information:
chroot/david/build/src/build/libkscan> cat CMakeFiles/kscan-shared.dir/flags.make # CMAKE generated file: DO NOT EDIT! # Generated by "Unix Makefiles" Generator, CMake Version 2.8
# compile CXX with /usr/bin/c++ CXX_FLAGS = -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4 -D_FORTIFY_SOURCE=2 -DQT_NO_ASCII_CAST -DQT_CLEAN_NAMESPACE -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_THREAD_SUPPORT -D_REENTRANT -include tqt.h -fPIC -I/build/src/build/libkscan -I/build/src/tdegraphics/libkscan -I/opt/trinity/include -I/opt/tqt3/include -I/opt/trinity/include/tqt
CXX_DEFINES = -Dkscan_shared_EXPORTS -DHAVE_CONFIG_H
The question is build.make -- is the symlink_library stuff correct? It looks like it, but I don't know. This is where the build craters:
libkscan/libkscan.so.1.0.0: libkscan/CMakeFiles/kscan-shared.dir/link.txt @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking CXX shared library libkscan.so" cd /build/src/build/libkscan && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/kscan-shared.dir/link.txt --verbose=$(VERBOSE) cd /build/src/build/libkscan && $(CMAKE_COMMAND) -E cmake_symlink_library libkscan.so.1.0.0 libkscan.so.1 libkscan.so
libkscan/libkscan.so.1: libkscan/libkscan.so.1.0.0
libkscan/libkscan.so: libkscan/libkscan.so.1.0.0
Stuck -- How To Fix??