#!/bin/sh## ========================================================================# FILE: ld_so_aix# TYPE: executable, uses makexp_aix# SYSTEM: AIX## DESCRIPTION: Creates a shareable .o from a set of pre-compiled# (unshared) .o files## USAGE: ld_so_aix [CC] [arguments]## ARGUMENTS: Same as for "ld". The following arguments are processed# or supplied by this script (those marked with an asterisk# can be overridden from command line):## Argument Default value# (*) -o [OutputFileName] -o shr.o# (*) -e [EntryPointLabel] -e init[OutputBaseName]# (*) -bE:[ExportFile] -bE:[OutputBaseName].exp# (*) -bI:[ImportFile] -bI:./python.exp# -bM:[ModuleType] -bM:SRE# -bhalt:[Number] -bhalt:4# -T[Number] -T512# -H[Number] -H512# -lm## The compiler specific ("-lc" or "-lc_r", "-lpthreads",...)# arguments will be automatically passed to "ld" according# to the CC command provided as a first argument to this# script. Usually, the same CC command was used to produce# the pre-compiled .o file(s).## NOTES: 1. Since "ld_so_aix" was originally written for building# shared modules for the Python interpreter, the -e and# -bI default values match Python's conventions. In# Python, the entry point for a shared module is based# on the module's name (e.g., the "mathmodule" will# expect an entry point of "initmath").# 2. The script accepts multiple .o or .a input files and# creates a single (shared) output file. The export list# that is created is based on the output file's basename# with the suffix ".exp".# 3. The resulting shared object file is left in the# current directory.# 4. Uncommenting the "echo" lines gives detailed output# about the commands executed in the script.### HISTORY: Oct-1996 -- Support added for multiple .o files --# -- and optional arguments processing. --# Chris Myers (myers@tc.cornell.edu), Keith Kwok# (kkwok@tc.cornell.edu) and Vladimir Marangozov## Aug-6-1996 -- Take care of the compiler specific --# -- args by leaving CC to invoke "ld". --# Vladimir Marangozov## Jul-1-1996 -- Make sure to use /usr/ccs/bin/ld --# -- Use makexp_aix for the export list. --# Vladimir Marangozov (Vladimir.Marangozov@imag.fr)## Manus Hand (mhand@csn.net) -- Initial code -- 6/24/96# ========================================================================#usage="Usage: ld_so_aix [CC command] [ld arguments]"if test ! -n "$*"; thenecho $usage; exit 2fimakexp=`dirname 0ドル`/makexp_aixtest -x "${makexp}" || makexp="@abs_srcdir@/makexp_aix"# Check for existence of compiler.CC=1ドル; shiftwhichcc=`which $CC`if test ! -x "$whichcc"; thenecho "ld_so_aix: Compiler '$CC' not found; exiting."exit 2fiif test ! -n "$*"; thenecho $usage; exit 2fi# Default import file for Python# Can be overridden by providing a -bI: argument.impfile="./python.exp"# Parse argumentswhile test -n "1ドル"docase "1ドル" in-e | -Wl,-e)if test -z "2ドル"; thenecho "ld_so_aix: The -e flag needs a parameter; exiting."; exit 2elseshift; entry=1ドルfi;;-e* | -Wl,-e*)entry=`echo 1ドル | sed -e "s/-Wl,//" -e "s/-e//"`;;-o)if test -z "2ドル"; thenecho "ld_so_aix: The -o flag needs a parameter; exiting."; exit 2elseshift; objfile=1ドルfi;;-o*)objfile=`echo 1ドル | sed "s/-o//"`;;-bI:* | -Wl,-bI:*)impfile=`echo 1ドル | sed -e "s/-Wl,//" -e "s/-bI://"`;;-bE:* | -Wl,-bE:*)expfile=`echo 1ドル | sed -e "s/-Wl,//" -e "s/-bE://"`;;*.o | *.a)objs="$objs1ドル"args="$args1ドル";;-bM:* | -Wl,-bM:* | -H* | -Wl,-H* | -T* | -Wl,-T* | -lm);;*)args="$args1ドル";;esacshiftdoneif test "$objfile" = "libpython@VERSION@@ABIFLAGS@.so"; thenldsocoremode="true"fiif test -z "$objs"; thenecho "ld_so_aix: No input files; exiting."exit 2elif test ! -r "$impfile" -a -z "$ldsocoremode"; thenecho "ld_so_aix: Import file '$impfile' not found or not readable; exiting."exit 2fi# If -o wasn't specified, assume "-o shr.o"if test -z "$objfile"; thenobjfile=shr.ofifilename=`basename $objfile | sed "s/\.[^.]*$//"`# If -bE: wasn't specified, assume "-bE:$filename.exp"if test -z "$expfile"; thenexpfile="$filename.exp"fi# Default entry symbol for Python modules = init[modulename]# Can be overridden by providing a -e argument.if test -z "$entry"; thenentry=PyInit_`echo $filename | sed "s/module.*//"`fi#echo "ld_so_aix: Debug info section"#echo " -> output file : $objfile"#echo " -> import file : $impfile"#echo " -> export file : $expfile"#echo " -> entry point : $entry"#echo " -> object files: $objs"#echo " -> CC arguments: $args"if test -z "$ldsocoremode"; thenCCOPT="-Wl,-e$entry -Wl,-bE:$expfile -Wl,-bI:$impfile -Wl,-bhalt:4"elseCCOPT="-Wl,-bnoentry -Wl,-bE:$expfile -Wl,-bhalt:4"fiCCOPT="$CCOPT -Wl,-bM:SRE -Wl,-T512 -Wl,-H512 -Wl,-brtl -Wl,-bnortllib -lm -o $objfile"CCARGS="$args"# Export list generation.#echo $makexp $expfile "$objfile" $objs$makexp $expfile "$objfile" $objs# Perform the link.#echo $CC $CCOPT $CCARGS$CC $CCOPT $CCARGSretval=$?# Delete the module's export list file.# Comment this line if you need it.rm -f $expfileexit $retval
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。