📄 ltmain.sh
字号:
This indicates that another process is trying to use the sametemporary object file, and libtool could not work around it becauseyour compiler does not support \`-c' and \`-o' together. If yourepeat this compilation, it may succeed, by chance, but you had betteravoid parallel builds (make -j) in this platform, or get a bettercompiler." $run $rm $removelist exit 1 fi # Just move the object if needed, then go on to compile the next one if test x"$output_obj" != x"$libobj"; then $show "$mv $output_obj $libobj" if $run $mv $output_obj $libobj; then : else error=$? $run $rm $removelist exit $error fi fi # If we have no pic_flag, then copy the object into place and finish. if test -z "$pic_flag" && test "$build_old_libs" = yes; then # Rename the .lo from within objdir to obj if test -f $obj; then $show $rm $obj $run $rm $obj fi $show "$mv $libobj $obj" if $run $mv $libobj $obj; then : else error=$? $run $rm $removelist exit $error fi xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` if test "X$xdir" = "X$obj"; then xdir="." else xdir="$xdir" fi baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` # Now arrange that obj and lo_libobj become the same file $show "(cd $xdir && $LN_S $baseobj $libobj)" if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then exit 0 else error=$? $run $rm $removelist exit $error fi fi # Allow error messages only from the first compilation. suppress_output=' >/dev/null 2>&1' fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then command="$base_compile $srcfile" if test "$compiler_c_o" = yes; then command="$command -o $obj" output_obj="$obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" $run $rm "$output_obj" $show "$command" if $run eval "$command"; then : else $run $rm $removelist exit 1 fi if test "$need_locks" = warn && test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then echo "\*** ERROR, $lockfile contains:`cat $lockfile 2>/dev/null`but it should contain:$srcfileThis indicates that another process is trying to use the sametemporary object file, and libtool could not work around it becauseyour compiler does not support \`-c' and \`-o' together. If yourepeat this compilation, it may succeed, by chance, but you had betteravoid parallel builds (make -j) in this platform, or get a bettercompiler." $run $rm $removelist exit 1 fi # Just move the object if needed if test x"$output_obj" != x"$obj"; then $show "$mv $output_obj $obj" if $run $mv $output_obj $obj; then : else error=$? $run $rm $removelist exit $error fi fi # Create an invalid libtool object if no PIC, so that we do not # accidentally link it into a program. if test "$build_libtool_libs" != yes; then $show "echo timestamp > $libobj" $run eval "echo timestamp > \$libobj" || exit $? else # Move the .lo from within objdir $show "$mv $libobj $lo_libobj" if $run $mv $libobj $lo_libobj; then : else error=$? $run $rm $removelist exit $error fi fi fi # Unlock the critical section if it was locked if test "$need_locks" != no; then $rm "$lockfile" fi exit 0 ;; # libtool link mode link) modename="$modename: link" case "$host" in *-*-cygwin* | *-*-mingw* | *-*-os2*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invokation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes # This is a source program that is used to create dlls on Windows # Don't remove nor modify the starting and closing comments# /* ltdll.c starts here */# #define WIN32_LEAN_AND_MEAN# #include <windows.h># #undef WIN32_LEAN_AND_MEAN# #include <stdio.h>## #ifndef __CYGWIN__# # ifdef __CYGWIN32__# # define __CYGWIN__ __CYGWIN32__# # endif# #endif## #ifdef __cplusplus# extern "C" {# #endif# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);# #ifdef __cplusplus# }# #endif## #ifdef __CYGWIN__# #include <cygwin/cygwin_dll.h># DECLARE_CYGWIN_DLL( DllMain );# #endif# HINSTANCE __hDllInstance_base;## BOOL APIENTRY# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)# {# __hDllInstance_base = hInst;# return TRUE;# }# /* ltdll.c ends here */ # This is a source program that is used to create import libraries # on Windows for dlls which lack them. Don't remove nor modify the # starting and closing comments# /* impgen.c starts here */# /* Copyright (C) 1999 Free Software Foundation, Inc.# # This file is part of GNU libtool.# # This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.# # This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.# # You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.# */# # #include <stdio.h> /* for printf() */# #include <unistd.h> /* for open(), lseek(), read() */# #include <fcntl.h> /* for O_RDONLY, O_BINARY */# #include <string.h> /* for strdup() */# # static unsigned int# pe_get16 (fd, offset)# int fd;# int offset;# {# unsigned char b[2];# lseek (fd, offset, SEEK_SET);# read (fd, b, 2);# return b[0] + (b[1]<<8);# }# # static unsigned int# pe_get32 (fd, offset)# int fd;# int offset;# {# unsigned char b[4];# lseek (fd, offset, SEEK_SET);# read (fd, b, 4);# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);# }# # static unsigned int# pe_as32 (ptr)# void *ptr;# {# unsigned char *b = ptr;# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24);# }# # int# main (argc, argv)# int argc;# char *argv[];# {# int dll;# unsigned long pe_header_offset, opthdr_ofs, num_entries, i;# unsigned long export_rva, export_size, nsections, secptr, expptr;# unsigned long name_rvas, nexp;# unsigned char *expdata, *erva;# char *filename, *dll_name;# # filename = argv[1];# # dll = open(filename, O_RDONLY|O_BINARY);# if (!dll)# return 1;# # dll_name = filename;# # for (i=0; filename[i]; i++)# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':')# dll_name = filename + i +1;# # pe_header_offset = pe_get32 (dll, 0x3c);# opthdr_ofs = pe_header_offset + 4 + 20;# num_entries = pe_get32 (dll, opthdr_ofs + 92);# # if (num_entries < 1) /* no exports */# return 1;# # export_rva = pe_get32 (dll, opthdr_ofs + 96);# export_size = pe_get32 (dll, opthdr_ofs + 100);# nsections = pe_get16 (dll, pe_header_offset + 4 +2);# secptr = (pe_header_offset + 4 + 20 +# pe_get16 (dll, pe_header_offset + 4 + 16));# # expptr = 0;# for (i = 0; i < nsections; i++)# {# char sname[8];# unsigned long secptr1 = secptr + 40 * i;# unsigned long vaddr = pe_get32 (dll, secptr1 + 12);# unsigned long vsize = pe_get32 (dll, secptr1 + 16);# unsigned long fptr = pe_get32 (dll, secptr1 + 20);# lseek(dll, secptr1, SEEK_SET);# read(dll, sname, 8);# if (vaddr <= export_rva && vaddr+vsize > export_rva)# {# expptr = fptr + (export_rva - vaddr);# if (export_rva + export_size > vaddr + vsize)# export_size = vsize - (export_rva - vaddr);# break;# }# }# # expdata = (unsigned char*)malloc(export_size);# lseek (dll, expptr, SEEK_SET);# read (dll, expdata, export_size);# erva = expdata - export_rva;# # nexp = pe_as32 (expdata+24);# name_rvas = pe_as32 (expdata+32);# # printf ("EXPORTS\n");# for (i = 0; i<nexp; i++)# {# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);# }# # return 0;# }# /* impgen.c ends here */ ;; *) allow_undefined=yes ;; esac compile_command="$nonopt" finalize_command="$nonopt" compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= linkopts= if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else lib_search_path= fi # now prepend the system-specific ones eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= link_against_libtool_libs= ltlibs= module=no objs= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= # We need to know -static, to get the right output filenames. for arg do case "$arg" in -all-static | -static) if test "X$arg" = "X-all-static"; then if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi else if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi fi build_libtool_libs=no build_old_libs=yes prefer_static_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test $# -gt 0; do arg="$1" shift # If the previous option needs an argument, assign it. if test -n "$prev"; then case "$prev" in output) compile_command="$compile_command @OUTPUT@" finalize_command="$finalize_command @OUTPUT@" ;; esac case "$prev" in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. compile_command="$compile_command @SYMFILE@" finalize_command="$finalize_command @SYMFILE@" preload=yes fi case "$arg" in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= ;; esac ;; expsyms) export_symbols="$arg" if test ! -f "$arg"; then $echo "$modename: symbol file \`$arg' does not exist" exit 1 fi prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case "$arg" in [\\/]* | [A-Za-z]:[\\/]*) ;; *) $echo "$modename: only absolute run-paths are allowed" 1>&2 exit 1 ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -