LinuxQuestions.org
Visit the LQ Articles and Editorials section
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices

Reply
 
LinkBack Search this Thread
Old 03-02-2006, 04:00 AM   #1
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Rep: Reputation: 30
When an executable turned to a script file,...??!


What to do if I get the following stuff in a cross-compiled armbe-linux
executable?
What is the quick solution? What is the scipt meaning? Pls forgive me
for this dumb question. I read thru it, but don't understand. I need
quick solution. Thanks
J

root@localhost build_unix]# cat excxx_example_database_load
#! /bin/sh


# excxx_example_database_load - temporary wrapper script for
.libs/excxx_example_database_load
# Generated by ltmain.sh - GNU libtool 1.5.20 (1.1220.2.287 2005/08/31
18:54:15)
#
# The excxx_example_database_load 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='/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="(cd
/root/Desktop/db_cross_compile/db-4.4.20/build_unix; { test -z
\"\${LIBRARY_PATH+set}\" || unset LIBRARY_PATH || { LIBRARY_PATH=;
export LIBRARY_PATH; }; }; { test -z \"\${COMPILER_PATH+set}\" || unset
COMPILER_PATH || { COMPILER_PATH=; export COMPILER_PATH; }; }; { test
-z \"\${GCC_EXEC_PREFIX+set}\" || unset GCC_EXEC_PREFIX || {
GCC_EXEC_PREFIX=; export GCC_EXEC_PREFIX; }; }; { test -z
\"\${LD_RUN_PATH+set}\" || unset LD_RUN_PATH || { LD_RUN_PATH=; export
LD_RUN_PATH; }; }; { test -z \"\${LD_LIBRARY_PATH+set}\" || unset
LD_LIBRARY_PATH || { LD_LIBRARY_PATH=; export LD_LIBRARY_PATH; }; };
PATH=\"/usr/kerberos/sbin:/usr/kerberos/bin:/opt/arcom/bin:/usr/local/sbin:*/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin\";
export PATH; armbe-linux-g++ -O -o \$progdir/\$file
.libs/excxx_example_database_load.o .libs/MyDb.o
./.libs/libdb_cxx-4.4.so -lpthread -Wl,--rpath
-Wl,/root/Desktop/db_cross_compile/db-4.4.20/build_unix/.libs)"


# This environment variable determines our operation mode.
if test "$libtool_install_magic" = "%%%MAGIC variable%%%"; then
# install mode needs the following variable:
notinst_deplibs=' libdb_cxx-4.4.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" | /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" | /bin/sed -n 's/.*-> //p'`
done


# Try to get the absolute directory name.
absdir=`cd "$thisdir" && pwd`
test -n "$absdir" && thisdir="$absdir"


program=lt-'excxx_example_database_load'
progdir="$thisdir/.libs"


if test ! -f "$progdir/$program" || \
{ file=`ls -1dt "$progdir/$program" "$progdir/../$program"
2>/dev/null | /bin/sed 1q`; \
test "X$file" != "X$progdir/$program"; }; then


file="$$-$program"


if test ! -d "$progdir"; then
mkdir "$progdir"
else
rm -f "$progdir/$file"
fi


# relink executable if necessary
if test -n "$relink_command"; then
if relink_command_output=`eval $relink_command 2>&1`; then :
else
echo "$relink_command_output" >&2
rm -f "$progdir/$file"
exit 1
fi
fi


mv -f "$progdir/$file" "$progdir/$program" 2>/dev/null ||
{ rm -f "$progdir/$program";
mv -f "$progdir/$file" "$progdir/$program"; }
rm -f "$progdir/$file"
fi


if test -f "$progdir/$program"; then
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
 
Old 03-02-2006, 04:06 AM   #2
acid_kewpie
Moderator
 
Registered: Jun 2001
Location: UK
Distribution: Gentoo, RHEL, Fedora, Centos
Posts: 43,344

Rep: Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945Reputation: 1945
your questions are little more than gibberish.. what do you actually want to know? that script is a wrapper of some sort, so just sets up an environment within which to run a specific program, passing through user defined options and adding it's own etc...
 
Old 03-02-2006, 08:31 PM   #3
aluser
Member
 
Registered: Mar 2004
Location: Massachusetts
Distribution: Debian
Posts: 557

Rep: Reputation: 42
It looks like you have a program which is compiled by libtool, and you're running the "executable" from where it sits inside the source tree.

libtool does this funny wrapper business because sometimes it happens that you have to compile (or rather link, I suppose) the paths to shared libraries into an executable, but before the program is installed those shared libraries won't be at those paths. e.g. you want the program to look for libs in /usr/lib/myprog/ after it's installed, but right now those libs are sitting in the source tree at /home/youruser/stuff/myprog/src/libs/blah/ . The wrapper deals with all this mess so that when you run the program in the source tree, it finds the right libs, but the installed version will also find the right libs.

There might be a little more to it than that, I'm not sure.
 
Old 03-07-2006, 11:12 PM   #4
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
Sorry, I still don't get it. Can you give a generic example?
Thanks a lot
Jack
 
Old 03-08-2006, 12:47 AM   #5
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
I beg your pardon. I start to build up my mind.
It said it was a wrapper script. If I downloaded both lt-exx_example_database_load and this script to the
correct dir, I would get a chance to make it run?
Thanks
Jack
 
Old 03-08-2006, 01:08 AM   #6
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
Or Do I need an exactly "Libtool" library to be installed on my PC/Linux b4 cross-compiling?
Thanks
Jack
 
Old 03-08-2006, 01:24 AM   #7
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
I made one step further. Just want to ask along


root@vulcan build_unix# ./excxx_example_database_load
./excxx_example_database_load: line 1: cd: /root/Desktop/db_cross_compile/db-4.y
./excxx_example_database_load: line 1: armbe-linux-g++: command not found
root@vulcan build_unix#

Note that I have mkdir a path called
/root/Desktop/db_cross_compile/build_unix and put the app there
where the original program lives in my PC, and remade libtool but I still got the above error
Thanks
Jack
 
Old 03-08-2006, 02:05 AM   #8
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
Forgot what rubbish I have stated.
I finally could compile it, but

example_database_load [-b <path to data files>] [-h <database home directory>]
Note: If -b -h is specified, then the path must end with your system's path delimiter )

So what the heck is "your system's path delimiter"?
Thanks
Jack
 
Old 03-08-2006, 02:26 AM   #9
lucky6969b
Member
 
Registered: Nov 2005
Posts: 337

Original Poster
Rep: Reputation: 30
Ah. The problem was solved, I did not put the files in the exact directory as it was on the PC.
Thanks
Jack
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
shell script to execute my c executable cranium2004 Programming 2 04-06-2005 05:26 AM
C executable or shell script run in mouse evnt sudhasmyle Programming 0 02-23-2005 06:37 AM
How do you turn an executable into a shell script? Thaidog Linux - Newbie 1 09-20-2004 07:20 PM
Linux Executable File Help (created from a .c file) MattG1981 Linux - Newbie 7 06-06-2004 04:54 PM
Make a shell script executable but not readable davholla Linux - Security 5 03-24-2004 03:44 AM


All times are GMT -5. The time now is 02:16 PM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration