On Mar 27, 2007, at 9:17 AM, Simon Josefsson wrote: > Daniel Johnson <[EMAIL PROTECTED]> writes: > >> The other bug is in tests/Makefile.in. The "AM_LDFLAGS = -no-install" >> should be omitted, since it tells libtool to not use a wrapper >> script. This causes simple to try to link to an already installed >> libssh2, not the one just built. So it either uses the wrong libssh2 >> or fails to build if libssh2 isn't installed at all. > > That is not what -no-install should be doing, here is the doc for it: > > `-no-install' > Link an executable OUTPUT-FILE that can't be installed and > therefore doesn't need a wrapper script. Useful if the > program is > only used in the build tree, e.g., for testing or generating > other > files. > > I don't have libssh2 installed on this machine, and building and > linking 'simple' works: > > [EMAIL PROTECTED]:~/src/libssh2/tests$ make clean > rm -f simple simple > rm -rf .libs _libs > rm -f *.o > rm -f *.lo > [EMAIL PROTECTED]:~/src/libssh2/tests$ make check > make simple > make[1]: Entering directory `/home/jas/src/libssh2/tests' > gcc -DHAVE_CONFIG_H -I. -I../src -I../include -g -O2 -I/usr/ > local/include -I/usr/include -MT simple.o -MD -MP -MF .deps/ > simple.Tpo -c -o simple.o simple.c > mv -f .deps/simple.Tpo .deps/simple.Po > /bin/sh ../libtool --tag=CC --mode=link gcc -g -O2 -I/usr/local/ > include -I/usr/include -no-install -L/usr/local/lib -lgcrypt -lgpg- > error -L/usr/lib -lz -o simple simple.o ../src/libssh2.la > mkdir .libs > gcc -g -O2 -I/usr/local/include -I/usr/include -o simple simple.o - > L/usr/local/lib /usr/local/lib/libgcrypt.so /usr/local/lib/libgpg- > error.so -L/usr/lib -lz ../src/.libs/libssh2.so -Wl,--rpath -Wl,/ > usr/local/lib -Wl,--rpath -Wl,/home/jas/src/libssh2/src/.libs -Wl,-- > rpath -Wl,/usr/local/lib > make[1]: Leaving directory `/home/jas/src/libssh2/tests' > make check-TESTS > make[1]: Entering directory `/home/jas/src/libssh2/tests' > PASS: simple > ================== > All 1 tests passed > ================== > make[1]: Leaving directory `/home/jas/src/libssh2/tests' > [EMAIL PROTECTED]:~/src/libssh2/tests$ > > It uses ../src/libssh2.la which expands to ../src/.libs/libssh2.so. > That seems correct to me. > > Could you please describe the symptoms of your problem in more detail? > > Which libtool version are you using? I'm using 1.5.22.
This is what I get with a fresh cvs checkout and no libssh2 already installed: $ make check Making check in src make[1]: Nothing to be done for `check'. Making check in example Making check in simple make[2]: Nothing to be done for `check'. make[2]: Nothing to be done for `check-am'. Making check in tests make simple gcc -DHAVE_CONFIG_H -I. -I../src -I../include -DLIBSSH2_DARWIN -I/ usr/include -I/usr/include -MT simple.o -MD -MP -MF .deps/simple.Tpo - c -o simple.o simple.c mv -f .deps/simple.Tpo .deps/simple.Po /bin/sh ../libtool --tag=CC --mode=link gcc -DLIBSSH2_DARWIN -I/ usr/include -I/usr/include -no-install -L/usr/lib -lcrypto -L/usr/lib -lz -o simple simple.o ../src/libssh2.la mkdir .libs gcc -DLIBSSH2_DARWIN -I/usr/include -I/usr/include -o simple simple.o -L/usr/lib ../src/.libs/libssh2.dylib -lcrypto -lz make check-TESTS dyld: Library not loaded: /usr/local/lib/libssh2.1.dylib Referenced from: /Users/daniel/Desktop/libssh2/tests/./simple Reason: image not found FAIL: simple ==================================================== 1 of 1 tests failed Please report to libssh2-devel@lists.sourceforge.net ==================================================== make[2]: *** [check-TESTS] Error 1 make[1]: *** [check-am] Error 2 make: *** [check-recursive] Error 1 "simple" is linked to /usr/local/lib/libssh2.1.dylib, but since that library isn't present it fails to run. In this case, tests/simple is a binary. If I remove -no-install I get this: $ make check Making check in src make[1]: Nothing to be done for `check'. Making check in example Making check in simple make[2]: Nothing to be done for `check'. make[2]: Nothing to be done for `check-am'. Making check in tests make simple gcc -DHAVE_CONFIG_H -I. -I../src -I../include -DLIBSSH2_DARWIN -I/ usr/include -I/usr/include -MT simple.o -MD -MP -MF .deps/simple.Tpo - c -o simple.o simple.c mv -f .deps/simple.Tpo .deps/simple.Po /bin/sh ../libtool --tag=CC --mode=link gcc -DLIBSSH2_DARWIN -I/ usr/include -I/usr/include -L/usr/lib -lcrypto -L/usr/lib -lz -o simple simple.o ../src/libssh2.la mkdir .libs gcc -DLIBSSH2_DARWIN -I/usr/include -I/usr/include -o .libs/simple simple.o -L/usr/lib ../src/.libs/libssh2.dylib -lcrypto -lz creating simple make check-TESTS PASS: simple ================== All 1 tests passed ================== Making check in docs make[1]: Nothing to be done for `check'. make[1]: Nothing to be done for `check-am'. Now tests/simple is a shell script with the actual binary in tests/.libs/simple. This is the script: #! /bin/sh # simple - temporary wrapper script for .libs/simple # Generated by ltmain.sh - GNU libtool 1.5.22 (1.1220.2.365 2005/12/18 22:14:06) # # The simple program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='/sw/bin/sed -e 1s/^X//' sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command="" # This environment variable determines our operation mode. if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then # install mode needs the following variable: notinst_deplibs=' ../src/libssh2.la' else # When we are sourced in execute mode, $file and $echo are already set. if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then echo="echo" file="$0" # Make sure echo works. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec /bin/sh "$0" --no-reexec ${1+"$@"} fi fi # Find the directory that this script lives in. thisdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` test "x$thisdir" = "x$file" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=`ls -ld "$file" | /sw/bin/sed -n 's/.*-> //p'` while test -n "$file"; do destdir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` # If there was a directory component, then change thisdir. if test "x$destdir" != "x$file"; then case "$destdir" in [\\/]* | [A-Za-z]:[\\/]*) thisdir="$destdir" ;; *) thisdir="$thisdir/$destdir" ;; esac fi file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` file=`ls -ld "$thisdir/$file" | /sw/bin/sed -n 's/.*-> //p'` done # Try to get the absolute directory name. absdir=`cd "$thisdir" && pwd` test -n "$absdir" && thisdir="$absdir" program='simple' progdir="$thisdir/.libs" if test -f "$progdir/$program"; then # Add our own library path to DYLD_LIBRARY_PATH DYLD_LIBRARY_PATH="/Users/daniel/Desktop/libssh2/src/.libs: $DYLD_LIBRARY_PATH" # Some systems cannot cope with colon-terminated DYLD_LIBRARY_PATH # The second colon is a workaround for a bug in BeOS R4 sed DYLD_LIBRARY_PATH=`$echo "X$DYLD_LIBRARY_PATH" | $Xsed -e 's/::* $//'` export DYLD_LIBRARY_PATH if test "$libtool_execute_magic" != "%%%MAGIC variable%%%"; then # Run the actual program with our arguments. exec "$progdir/$program" ${1+"$@"} $echo "$0: cannot exec $program ${1+"$@"}" exit 1 fi else # The program doesn't exist. $echo "$0: error: \`$progdir/$program' does not exist" 1>&2 $echo "This script is just a wrapper for $program." 1>&2 echo "See the libtool documentation for more information." 1>&2 exit 1 fi fi The script sets up DYLD_LIBRARY_PATH so that Darwin's linker can find things. This is definitely a Darwinism needed because of Darwin's wacky linker. This is with libtool 1.5.22. Please let me know if I can provide any more information. Daniel ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ libssh2-devel mailing list libssh2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libssh2-devel