<div class="gmail_quote">2012/6/5 Wu Degang <span dir="ltr"><<a href="mailto:samuelandjw@gmail.com" target="_blank">samuelandjw@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
In addition to petsc and slepc, I also need to link my program to external libraries such as GSL. I would like to modify the sample makefile in ${SLEPC_DIR}/src/eps/examples/<u></u>tutorial/makefile rather than writing one from scratch. I modified the makefile so that<br>
<br>
ex1: ex1.o chkopts<br>
-${CLINKER} -o ex1 ex1.o ${SLEPC_LIB}<br>
${RM} ex1.o<br>
<br>
becomes<br>
<br>
ex1: ex1.o chkopts<br>
-${CLINKER} -o ex1 ex1.o ${SLEPC_LIB} -lgsl -L/opt/local/lib<br>
${RM} ex1.o<br>
<br>
But the linking process failed. The output:<br>
<br>
bash-3.2$ make ex1<br>
/Users/wudegang/petsc-3.2-p7/<u></u>arch-darwin-c-debug/bin/mpic++ -o ex1.o -c -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g -I/Users/wudegang/petsc-3.2-<u></u>p7/include -I/Users/wudegang/petsc-3.2-<u></u>p7/arch-darwin-c-debug/include -I/opt/local/include -D__INSDIR__=src/eps/examples/<u></u>tutorials/ -I/Users/wudegang/slepc-3.2-p5 -I/Users/wudegang/slepc-3.2-<u></u>p5/arch-darwin-c-debug/include -I/Users/wudegang/slepc-3.2-<u></u>p5/include ex1.c<br>
/Users/wudegang/petsc-3.2-p7/<u></u>arch-darwin-c-debug/bin/mpic++ -Wl,-multiply_defined,suppress -Wl,-multiply_defined -Wl,suppress -Wl,-commons,use_dylibs -Wl,-search_paths_first -Wl,-multiply_defined,suppress -Wl,-multiply_defined -Wl,suppress -Wl,-commons,use_dylibs -Wl,-search_paths_first -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -g -o ex1 ex1.o -L/Users/wudegang/slepc-3.2-<u></u>p5/arch-darwin-c-debug/lib -L/Users/wudegang/slepc-3.2-<u></u>p5/arch-darwin-c-debug/lib -lslepc -L/Users/wudegang/petsc-3.2-<u></u>p7/arch-darwin-c-debug/lib -lpetsc -L/usr/X11R6/lib -lX11 -lpthread -llapack -lblas -lmpi_cxx -lstdc++ -ldl -lgsl -L/opt/local/lib<br>
</blockquote><div><br></div><div><br></div><div>I'm going to guess that you have a functional liblapack and libblas at /usr/lib and a broken one (possibly installed by macports) in /opt/local/lib which gets picked up when the -L/opt/local/lib option is added.</div>
<div><br></div><div>Fix is to remove the BLAS and LAPACK from in /opt/local/lib so that the one at /usr/lib can be used.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Undefined symbols for architecture x86_64:<br>
"_dgelqf", referenced from:<br>
IPCGSBiOrthogonalization(_p_<u></u>IP*, int, _p_Vec**, _p_Vec**, _p_Vec*, double*, double*, double*)in libslepc.a(iporthog.c.o)<br>
"_dormlq", referenced from:<br>
IPCGSBiOrthogonalization(_p_<u></u>IP*, int, _p_Vec**, _p_Vec**, _p_Vec*, double*, double*, double*)in libslepc.a(iporthog.c.o)<br>
"_dlaev2", referenced from:<br>
EPSSolve_TS_Power(_p_EPS*) in libslepc.a(power.c.o)<br>
EPSSolve_Power(_p_EPS*) in libslepc.a(power.c.o)<br>
"_dlanhs", referenced from:<br>
EPSHessCond(int, double*, int, double*)in libslepc.a(subspace.c.o)<br>
"_dgetrf", referenced from:<br>
EPSHessCond(int, double*, int, double*)in libslepc.a(subspace.c.o)<br>
EPSTranslateHarmonic(int, double*, int, double, double, double*, double*)in libslepc.a(ks-harm.c.o)<br>
MatLUFactor_SeqDense(_p_Mat*, _p_IS*, _p_IS*, MatFactorInfo const*)in libpetsc.a(dense.c.o)<br>
_<u></u>KSPDGMRESComputeDeflationData_<u></u>DGMRES in libpetsc.a(dgmres.c.o)<br>
_KSPDGMRESImproveEig_DGMRES in libpetsc.a(dgmres.c.o)<br>
dvd_improvex_jd_proj_cuv(_<u></u>dvdDashboard*, int, int, _p_Vec***, _p_Vec***, _p_Vec**, _p_Vec***, double**, double*, double*, double*, double*, int)in libslepc.a(dvd_improvex.c.o)<br>
"_dgetri", referenced from:<br>
EPSHessCond(int, double*, int, double*)in libslepc.a(subspace.c.o)<br>
"_dlange", referenced from:<br>
EPSHessCond(int, double*, int, double*)in libslepc.a(subspace.c.o)<br>
"_dsytrd", referenced from:<br>
ArrowTridFlip(int, int, double*, double*, double*, double*)in libslepc.a(ks-symm.c.o)<br>
"_dorgtr", referenced from:<br>
ArrowTridFlip(int, int, double*, double*, double*, double*)in libslepc.a(ks-symm.c.o)<br>
"_dsteqr", referenced from:<br>
ArrowTridFlip(int, int, double*, double*, double*, double*)in libslepc.a(ks-symm.c.o)<br>
"_dgetrs", referenced from:<br>
EPSTranslateHarmonic(int, double*, int, double, double, double*, double*)in libslepc.a(ks-harm.c.o)<br>
MatMatSolve_SeqDense(_p_Mat*, _p_Mat*, _p_Mat*)in libpetsc.a(dense.c.o)<br>
MatSolve_SeqDense(_p_Mat*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveTranspose_SeqDense(_p_<u></u>Mat*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveAdd_SeqDense(_p_Mat*, _p_Vec*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveTransposeAdd_SeqDense(<u></u>_p_Mat*, _p_Vec*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
_KSPDGMRESApplyDeflation_<u></u>DGMRES in libpetsc.a(dgmres.c.o)<br>
...<br>
"_dgesvd", referenced from:<br>
EPSUpdateVectors(_p_EPS*, int, _p_Vec**, int, int, double*, int, double*, int)in libslepc.a(arnoldi.c.o)<br>
PCSetUp_SVD(_p_PC*) in libpetsc.a(svd.c.o)<br>
KSPComputeExtremeSingularValue<u></u>s_GMRES(_p_KSP*, double*, double*)in libpetsc.a(gmreig.c.o)<br>
"_dlasv2", referenced from:<br>
EPSCleanDenseSchur(int, int, double*, int, double*, int, double*, double*, int, PetscBool)in libslepc.a(dvd_blas.c.o)<br>
"_dtgevc", referenced from:<br>
dvd_compute_eigenvectors(int, double*, int, double*, int, double*, int, double*, int, double*, int, PetscBool)in libslepc.a(dvd_blas.c.o)<br>
"_dtrevc", referenced from:<br>
dvd_compute_eigenvectors(int, double*, int, double*, int, double*, int, double*, int, double*, int, PetscBool)in libslepc.a(dvd_blas.c.o)<br>
EPSComputeVectors_Schur(_p_<u></u>EPS*) in libslepc.a(default.c.o)<br>
QEPComputeVectors_Schur(_p_<u></u>QEP*) in libslepc.a(qepdefault.c.o)<br>
DenseSelectedEvec(double*, int, double*, double*, int, PetscBool, int, double*)in libslepc.a(dense.c.o)<br>
"_dgeqrf", referenced from:<br>
SlepcDenseOrth(double*, int, int, int, double*, int, int*)in libslepc.a(dvd_blas.c.o)<br>
PCCreateTransferOp_ASA(__PC_<u></u>ASA_level*, PetscBool) in libpetsc.a(asa.c.o)<br>
"_dorgqr", referenced from:<br>
SlepcDenseOrth(double*, int, int, int, double*, int, int*)in libslepc.a(dvd_blas.c.o)<br>
PCCreateTransferOp_ASA(__PC_<u></u>ASA_level*, PetscBool) in libpetsc.a(asa.c.o)<br>
"_dpbtrf", referenced from:<br>
VecsOrthonormalize(_p_Vec**, int, double*, double*)in libslepc.a(dvd_blas.c.o)<br>
"_dgeevx", referenced from:<br>
EPSDenseNHEP(int, double*, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dstevr", referenced from:<br>
EPSDenseTridiagonal(int, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dtgexc", referenced from:<br>
EPSSortDenseSchurGeneralized(_<u></u>p_EPS*, int, int, int, double*, double*, int, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dlamch", referenced from:<br>
EPSSortDenseSchurGeneralized(_<u></u>p_EPS*, int, int, int, double*, double*, int, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dlag2", referenced from:<br>
EPSSortDenseSchurGeneralized(_<u></u>p_EPS*, int, int, int, double*, double*, int, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dtrexc", referenced from:<br>
EPSSortDenseSchur(_p_EPS*, int, int, double*, int, double*, double*, double*)in libslepc.a(dense.c.o)<br>
QEPSortDenseSchur(_p_QEP*, int, int, double*, int, double*, double*, double*)in libslepc.a(qepdense.c.o)<br>
"_dhseqr", referenced from:<br>
EPSDenseSchur(int, int, double*, int, double*, double*, double*)in libslepc.a(dense.c.o)<br>
_KSPDGMRESComputeSchurForm_<u></u>DGMRES in libpetsc.a(dgmres.c.o)<br>
"_dgehrd", referenced from:<br>
EPSDenseHessenberg(int, int, double*, int, double*)in libslepc.a(dense.c.o)<br>
"_dorghr", referenced from:<br>
EPSDenseHessenberg(int, int, double*, int, double*)in libslepc.a(dense.c.o)<br>
"_dsygvd", referenced from:<br>
EPSDenseGHEP(int, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dsyevr", referenced from:<br>
EPSDenseHEP(int, double*, int, double*, double*)in libslepc.a(dense.c.o)<br>
"_dggevx", referenced from:<br>
EPSDenseGNHEP(int, double*, double*, double*, double*, double*, double*)in libslepc.a(dense.c.o)<br>
"_dbdsdc", referenced from:<br>
SVDSolve_Lanczos(_p_SVD*) in libslepc.a(gklanczos.c.o)<br>
"_dgesdd", referenced from:<br>
SVDDense(int, int, double*, double*, double*, double*)in libslepc.a(svddense.c.o)<br>
"_dpotrf", referenced from:<br>
MatCholeskyFactor_SeqDense(_p_<u></u>Mat*, _p_IS*, MatFactorInfo const*)in libpetsc.a(dense.c.o)<br>
KSPSolve_BCGSL(_p_KSP*) in libpetsc.a(bcgsl.c.o)<br>
"_dpotrs", referenced from:<br>
MatMatSolve_SeqDense(_p_Mat*, _p_Mat*, _p_Mat*)in libpetsc.a(dense.c.o)<br>
MatSolve_SeqDense(_p_Mat*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveTranspose_SeqDense(_p_<u></u>Mat*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveAdd_SeqDense(_p_Mat*, _p_Vec*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
MatSolveTransposeAdd_SeqDense(<u></u>_p_Mat*, _p_Vec*, _p_Vec*, _p_Vec*)in libpetsc.a(dense.c.o)<br>
KSPSolve_BCGSL(_p_KSP*) in libpetsc.a(bcgsl.c.o)<br>
"_dtrsen", referenced from:<br>
_KSPDGMRESComputeSchurForm_<u></u>DGMRES in libpetsc.a(dgmres.c.o)<br>
"_dgerfs", referenced from:<br>
_KSPDGMRESApplyDeflation_<u></u>DGMRES in libpetsc.a(dgmres.c.o)<br>
"_dgges", referenced from:<br>
_KSPDGMRESImproveEig_DGMRES in libpetsc.a(dgmres.c.o)<br>
dvd_calcpairs_projeig_qz_gen(_<u></u>dvdDashboard*) in libslepc.a(dvd_calcpairs.c.o)<br>
"_dtgsen", referenced from:<br>
_KSPDGMRESImproveEig_DGMRES in libpetsc.a(dgmres.c.o)<br>
"_dstebz", referenced from:<br>
KSPSolve_GLTR(_p_KSP*) in libpetsc.a(gltr.c.o)<br>
"_dpttrf", referenced from:<br>
KSPSolve_GLTR(_p_KSP*) in libpetsc.a(gltr.c.o)<br>
"_dpttrs", referenced from:<br>
KSPSolve_GLTR(_p_KSP*) in libpetsc.a(gltr.c.o)<br>
"_dstein", referenced from:<br>
KSPSolve_GLTR(_p_KSP*) in libpetsc.a(gltr.c.o)<br>
"_dgeev", referenced from:<br>
KSPComputeEigenvaluesExplicitl<u></u>y(_p_KSP*, int, double*, double*)in libpetsc.a(eige.c.o)<br>
KSPComputeEigenvalues_GMRES(_<u></u>p_KSP*, int, double*, double*, int*)in libpetsc.a(gmreig.c.o)<br>
ld: symbol(s) not found for architecture x86_64<br>
collect2: ld returned 1 exit status<br>
make: [ex1] Error 1 (ignored)<br>
/bin/rm -f ex1.o<span class="HOEnZb"><font color="#888888"><br>
<br>
Wu Degang<br>
</font></span></blockquote></div><br>