我正在尝试为 tcl 配置和制作安装包 nap6.4,但它在“制作”期间失败并出现以下错误:
cc -shared -o libnap6.4.so cart_proj.o eval_tree.o function.o geometry.o land_flag.o land_flag_i.o linsys.o nap.o napChoice.o napDyad.o napDyadLib.o napImgNAO.o napInit.o napLib.o napMonad.o napParse.tab.o napParseLib.o napPolygon.o napSpatial.o nap_get.o nap_hdf.o nap_netcdf.o nap_ooc.o triangulate.o -L/usr/local/lib -lnetcdf -L/usr/local/lib -lmfhdf -ldf -ljpeg -lz -L/usr/local/lib -lproj -L. -ltclstub8.4 -ltkstub8.4 -lieee -lm -lX11
/usr/bin/ld: /usr/local/lib/libmfhdf.a(mfsd.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with - fPIC
/usr/local/lib/libmfhdf.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make: *** [libnap6.4.so] Error 1
所以我被告知要使用 -fPIC 重新编译,我在终端通过以下方式进行了编译:
export CFLAGS=-fPIC
./configure --prefix/lib/ActiveTcl --enable-shared
make
但这不起作用。我也尝试过使用 --disable-shared、make clean 和
export CFLAGS="-fPIC -DHAVE_NETCDF"/ export CFLAGS="-fPIC" etc..
以及其他不工作的 CFLAGS 版本。
所以我想知道如何使用 -fPIC 重新编译?我在这里缺少一些特殊的语法吗?