gcc中的-Wl,rpath=<your_lib_dir>选项

本文介绍使用GCC编译器进行动态库链接时遇到的问题及解决方案,详细解释了-L选项的作用以及如何通过-Wl,-rpath选项确保运行时正确找到动态链接库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gcc编译链接动态库时,很有可能编译通过,但是执行时,找不到动态链接库,那是

因为-L选项指定的路径只在编译时有效,编译出来的可执行文件不知道-L选项后面的值,

当然找不到。可以用ldd <your_execute>看看是不有 ‘not found’在你链接的库后面,

解决方法是通过-Wl,rpath=<your_lib_dir>,使得execute记住链接库的位置

gcc -o foo foo.c -L/usr/local/lib -lfoo -Wl,-rpath=/usr/local/lib
gcc -o foo foo.c -L$(prefix)/lib -lfoo -Wl,-rpath=$(prefix)/lib
 

Re: linking with -Wl,-rpath and $(prefix)

  • From: "Nelson H. F. Beebe" <beebe at math dot utah dot edu>
  • To: gcc-help at gcc dot gnu dot org
  • Cc: beebe at math dot utah dot edu, "David Carter-Hitchin" <david at carter-hitchin dot clara dot co dot uk>
  • Date: Fri, 2 Dec 2005 17:18:18 -0700 (MST)
  • Subject: Re: linking with -Wl,-rpath and $(prefix)

"David Carter-Hitchin" <david@carter-hitchin.clara.co.uk> asks on
Fri, 2 Dec 2005 23:47:28 -0000 about -Wl,-rpath versus -L.

The -L option supplies a colon-separated library path that is to be
searched at LINK TIME for libraries. Thus

	cc -o foo foo.c -L/usr/local/lib -lfoo

means that either libfoo.a or libfoo.so should be found in either
/usr/local/lib, or elsewhere in the default search patch (in
GNU/Linux, the directories can be listed in /etc/ld.so.conf, and the
cache updated by running /etc/ldconfig).

Whether the .a or .so form of the library is needed is platform
dependent (e.g., IBM AIX uses only the .a form), and also dependent on
compiler options to select dynamic or static linking.  The default is
normally dynamic linking to save disk space and waste CPU time.

However, this means while that the executable foo may have been
successfully linked against a shared library, at RUN TIME, the
run-time loader looks for it in the default search path, possibly
prefixed by a colon-separated list of libraries supplied by the
LD_LIBRARY_PATH variable.

If, in our example, /usr/local/lib is not part of the default path,
then the run-time loader will not be able to find the shared library,
EVEN THOUGH LINKING SUCCEEDED (because of the -L/usr/local/lib
option).

You can check whether shared libraries can be found by running

	env -i ldd foo

(the "env -i" says to ignore any existing environment variables, such
as LD_LIBRARY_PATH).

For example, on one of my systems, I find

	% env -i ldd /usr/local/bin/emacs
		libXaw3d.so.5 =>         (file not found)
		libXmu.so.4 =>   /usr/lib/libXmu.so.4
		libXt.so.4 =>    /usr/lib/libXt.so.4
		...

Notice the "(file not found") line.  That library is actually present
on that system in /usr/local/lib, and I can make it succeed like this:

	% env -i LD_LIBRARY_PATH=/usr/local/lib ldd /usr/local/bin/emacs
	        libXaw3d.so.5 =>         /usr/local/lib/libXaw3d.so.5
        	libXmu.so.4 =>   /usr/lib/libXmu.so.4
		...

Thus, when shared libraries are present in nondefault directories, you
need to supply an additional linker option, usually -R or -Wl,-rpath=,
with a run-time library path.  Our example above becomes for gcc

	gcc -o foo foo.c -L/usr/local/lib -lfoo -Wl,-rpath=/usr/local/lib

In a Makefile, I would write this as

	gcc -o foo foo.c -L$(prefix)/lib -lfoo -Wl,-rpath=$(prefix)/lib

so that the same library path is used at link time as at run time, and
so that the executable file, foo, records that path.  With GNU
autoconf, the normal condition is that prefix is the root of the file
tree into which you install software locally, so the above command is
fairly typical.  Unfortunately, software developers who have
nondefault library search paths often forget to supply the -Wl,-rpath
or -R options in their Makefiles, with the result that the code builds
and runs at their sites, but not at end user sites.

>From notes that I keep:

>> ...
>> Unfortunately, there are at least three incompatible kinds of
>> command-line options that tell the compiler to instruct the linker to
>> save library paths in the executable:
>>
>> 	-Wl,-rpath,/path/to/dir		gcc, g++, FreeBSD, SGI, Sun compilers
>> 	-rpath /path/to/dir		Compaq/DEC, SGI compilers
>> 	-Rdir:dir:dir			Portland Group, Sun compilers
>>
>> Notice that SGI and Sun support two such flavors.
>> ...

In my view, there is clearly brain damage here: (1) compiler writers
should have standardized on the same option name for recording the
run-time library path (I'd vote for -R), and (2) the linker should
really record the run-time library path by default, so that -R would
almost never be needed.

-------------------------------------------------------------------------------
- Nelson H. F. Beebe                    Tel: +1 801 581 5254                  -
- University of Utah                    FAX: +1 801 581 4148                  -
- Department of Mathematics, 110 LCB    Internet e-mail: beebe@math.utah.edu  -
- 155 S 1400 E RM 233                       beebe@acm.org  beebe@computer.org -
- Salt Lake City, UT 84112-0090, USA    URL: http://www.math.utah.edu/~beebe  -
-------------------------------------------------------------------------------

VERSION_MAJOR = 1 VERSION_MINOR = 0 VERSION_PATCH = 0 LIB_VERSION = $(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_PATCH) COMPILE_DIR = /opt/M300_V5.0_kernel4.4.94/prebuilts/toolchains/mips-gcc720-glibc229 COMPILE = $(COMPILE_DIR)/bin/mips-linux-gnu- GCC = $(COMPILE)gcc ALG_PATH = ./thirdpart LD_RUN_PATH = -Wl,-rpath=$(ALG_PATH) # 编译选项增加-fPIC和-shared CFALGS = $(INCLUDE) CFALGS += -g CFALGS += -fPIC # 生成位置无关代码 CFALGS += -Wall CFALGS += $(LD_RUN_PATH) CFALGS += -L./thirdpart # 链接选项单独定义 LDFLAGS = -shared # 生成共享库 LDFLAGS += -Wl,-soname,libp2501_keyindex.so.$(VERSION_MAJOR) # 设置主版本soname LDFLAGS += -lm LDFLAGS += -lpthread LDFLAGS += -ldl LDFLAGS += -l0405 LDFLAGS += -lgmssl OBJPATH = ./ \ src/base64/ \ src/cjson/ \ src/log/ \ src/tools/ \ src/queue/ \ src/shm/ \ src/hostapi/ SRC_C = $(foreach dir, $(OBJPATH), $(wildcard $(dir)*.c)) OBJS_FILE_OBJ = $(patsubst %.c, %.o, $(SRC_C)) VPATH := $(OBJPATH) INCLUDES = include/ \ include/base64/ \ include/cjson/ \ include/log/ \ include/tools/ \ include/queue/ \ include/shm/ \ include/hostapi/ INCLUDE = $(patsubst %, -I %, $(INCLUDES)) CLEAN_DIR = $(foreach dir, $(OBJPATH), $(wildcard $(dir)*.o)) # 修改目标为带版本号的动态库 TARGET = libp2501_keyindex.so.$(LIB_VERSION) .PHONY: build clean build: $(OBJS_FILE_OBJ) # 生成带版本号的动态库并创建符号链接 $(GCC) $(OBJS_FILE_OBJ) -o $(TARGET) $(CFALGS) $(LDFLAGS) ln -sf $(TARGET) libp2501_keyindex.so.$(VERSION_MAJOR) ln -sf libp2501_keyindex.so.$(VERSION_MAJOR) libp2501_keyindex.so clean: # 清理生成的文件和符号链接 $(RM) ./$(TARGET) $(RM) libp2501_keyindex.so.$(VERSION_MAJOR) $(RM) libp2501_keyindex.so for n in $(CLEAN_DIR); do rm -rf $$n; done %.o: %.c # 编译时添加-fPIC $(GCC) -c $< -o $@ $(CFALGS)编译成库后其他程序调用的使用方法
04-02
(dla) root@bbbc6f9276e3:/# pip install mpi4py==3.0.3 Collecting mpi4py==3.0.3 Downloading mpi4py-3.0.3.tar.gz (1.4 MB) |################################| 1.4 MB 294 kB/s Preparing metadata (setup.py) ... done Building wheels for collected packages: mpi4py Building wheel for mpi4py (setup.py) ... error ERROR: Command errored out with exit status 1: command: /root/miniconda3/envs/dla/bin/python3.6 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"'; __file__='"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-1b28h61h cwd: /tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/ Complete output (206 lines): running bdist_wheel running build running build_src running build_py creating build creating build/lib.linux-x86_64-3.6 creating build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/run.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__main__.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__init__.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/bench.py -> build/lib.linux-x86_64-3.6/mpi4py creating build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/pool.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/server.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/aplus.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/__main__.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/__init__.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/_lib.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/_base.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/libmpi.pxd -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__init__.pxd -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/MPI.pxd -> build/lib.linux-x86_64-3.6/mpi4py creating build/lib.linux-x86_64-3.6/mpi4py/include creating build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.MPI_api.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.MPI.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.i -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi.pxi -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py running build_clib MPI configuration: [mpi] from 'mpi.cfg' MPI C compiler: /root/miniconda3/envs/dla/bin/mpicc MPI C++ compiler: /root/miniconda3/envs/dla/bin/mpicxx MPI F compiler: /root/miniconda3/envs/dla/bin/mpifort MPI F90 compiler: /root/miniconda3/envs/dla/bin/mpif90 MPI F77 compiler: /root/miniconda3/envs/dla/bin/mpif77 checking for library 'lmpe' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'mpe' dylib library creating build/temp.linux-x86_64-3.6 creating build/temp.linux-x86_64-3.6/src creating build/temp.linux-x86_64-3.6/src/lib-pmpi /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/mpe.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/mpe.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "mpe" failed checking for library 'vt-mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt" failed checking for library 'vt-mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt-mpi' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt-mpi.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt-mpi.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt-mpi" failed checking for library 'vt-hyb' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.ompi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt-hyb' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt-hyb.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt-hyb.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt-hyb" failed running build_ext MPI configuration: [mpi] from 'mpi.cfg' MPI C compiler: /root/miniconda3/envs/dla/bin/mpicc MPI C++ compiler: /root/miniconda3/envs/dla/bin/mpicxx MPI F compiler: /root/miniconda3/envs/dla/bin/mpifort MPI F90 compiler: /root/miniconda3/envs/dla/bin/mpif90 MPI F77 compiler: /root/miniconda3/envs/dla/bin/mpif77 checking for dlopen() availability ... checking for header 'dlfcn.h' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o success! removing: _configtest.c _configtest.o success! checking for library 'dl' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ _configtest.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o _configtest success! removing: _configtest.c _configtest.o _configtest checking for function 'dlopen' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ _configtest.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o _configtest success! removing: _configtest.c _configtest.o _configtest building 'mpi4py.dl' extension gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_DLFCN_H=1 -DHAVE_DLOPEN=1 -I/root/miniconda3/envs/dla/include/python3.6m -c src/dynload.c -o build/temp.linux-x86_64-3.6/src/dynload.o gcc -pthread -shared -B /root/miniconda3/envs/dla/compiler_compat -L/root/miniconda3/envs/dla/lib -Wl,-rpath=/root/miniconda3/envs/dla/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/src/dynload.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o build/lib.linux-x86_64-3.6/mpi4py/dl.cpython-36m-x86_64-linux-gnu.so checking for MPI compile and link ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o error: Cannot compile MPI programs. Check your configuration!!! ---------------------------------------- ERROR: Failed building wheel for mpi4py Running setup.py clean for mpi4py Failed to build mpi4py Installing collected packages: mpi4py Running setup.py install for mpi4py ... error ERROR: Command errored out with exit status 1: command: /root/miniconda3/envs/dla/bin/python3.6 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"'; __file__='"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-tvroj_hd/install-record.txt --single-version-externally-managed --compile --install-headers /root/miniconda3/envs/dla/include/python3.6m/mpi4py cwd: /tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/ Complete output (206 lines): running install running build running build_src running build_py creating build creating build/lib.linux-x86_64-3.6 creating build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/run.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__main__.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__init__.py -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/bench.py -> build/lib.linux-x86_64-3.6/mpi4py creating build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/pool.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/server.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/aplus.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/__main__.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/__init__.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/_lib.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/futures/_base.py -> build/lib.linux-x86_64-3.6/mpi4py/futures copying src/mpi4py/libmpi.pxd -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/__init__.pxd -> build/lib.linux-x86_64-3.6/mpi4py copying src/mpi4py/MPI.pxd -> build/lib.linux-x86_64-3.6/mpi4py creating build/lib.linux-x86_64-3.6/mpi4py/include creating build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.MPI_api.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.MPI.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.h -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi4py.i -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py copying src/mpi4py/include/mpi4py/mpi.pxi -> build/lib.linux-x86_64-3.6/mpi4py/include/mpi4py running build_clib MPI configuration: [mpi] from 'mpi.cfg' MPI C compiler: /root/miniconda3/envs/dla/bin/mpicc MPI C++ compiler: /root/miniconda3/envs/dla/bin/mpicxx MPI F compiler: /root/miniconda3/envs/dla/bin/mpifort MPI F90 compiler: /root/miniconda3/envs/dla/bin/mpif90 MPI F77 compiler: /root/miniconda3/envs/dla/bin/mpif77 checking for library 'lmpe' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'mpe' dylib library creating build/temp.linux-x86_64-3.6 creating build/temp.linux-x86_64-3.6/src creating build/temp.linux-x86_64-3.6/src/lib-pmpi /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/mpe.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/mpe.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "mpe" failed checking for library 'vt-mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt" failed checking for library 'vt-mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.mpi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt-mpi' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt-mpi.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt-mpi.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt-mpi" failed checking for library 'vt-hyb' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o checking for library 'vt.ompi' ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o building 'vt-hyb' dylib library /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -c src/lib-pmpi/vt-hyb.c -o build/temp.linux-x86_64-3.6/src/lib-pmpi/vt-hyb.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- warning: build_clib: command '/root/miniconda3/envs/dla/bin/mpicc' failed with exit status 1 warning: build_clib: building optional library "vt-hyb" failed running build_ext MPI configuration: [mpi] from 'mpi.cfg' MPI C compiler: /root/miniconda3/envs/dla/bin/mpicc MPI C++ compiler: /root/miniconda3/envs/dla/bin/mpicxx MPI F compiler: /root/miniconda3/envs/dla/bin/mpifort MPI F90 compiler: /root/miniconda3/envs/dla/bin/mpif90 MPI F77 compiler: /root/miniconda3/envs/dla/bin/mpif77 checking for dlopen() availability ... checking for header 'dlfcn.h' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o success! removing: _configtest.c _configtest.o success! checking for library 'dl' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ _configtest.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o _configtest success! removing: _configtest.c _configtest.o _configtest checking for function 'dlopen' ... gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ _configtest.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o _configtest success! removing: _configtest.c _configtest.o _configtest building 'mpi4py.dl' extension gcc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DHAVE_DLFCN_H=1 -DHAVE_DLOPEN=1 -I/root/miniconda3/envs/dla/include/python3.6m -c src/dynload.c -o build/temp.linux-x86_64-3.6/src/dynload.o gcc -pthread -shared -B /root/miniconda3/envs/dla/compiler_compat -L/root/miniconda3/envs/dla/lib -Wl,-rpath=/root/miniconda3/envs/dla/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.6/src/dynload.o -Lbuild/temp.linux-x86_64-3.6 -ldl -o build/lib.linux-x86_64-3.6/mpi4py/dl.cpython-36m-x86_64-linux-gnu.so checking for MPI compile and link ... /root/miniconda3/envs/dla/bin/mpicc -pthread -B /root/miniconda3/envs/dla/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/root/miniconda3/envs/dla/include/python3.6m -c _configtest.c -o _configtest.o -------------------------------------------------------------------------- The Open MPI wrapper compiler was unable to find the specified compiler x86_64-conda-linux-gnu-cc in your PATH. Note that this compiler was either specified at configure time or in one of several possible environment variables. -------------------------------------------------------------------------- failure. removing: _configtest.c _configtest.o error: Cannot compile MPI programs. Check your configuration!!! ---------------------------------------- ERROR: Command errored out with exit status 1: /root/miniconda3/envs/dla/bin/python3.6 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"'; __file__='"'"'/tmp/pip-install-lw95xiq4/mpi4py_8b91087d72f84b52b99093b4f331a6c6/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-tvroj_hd/install-record.txt --single-version-externally-managed --compile --install-headers /root/miniconda3/envs/dla/include/python3.6m/mpi4py Check the logs for full command output.
最新发布
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值