<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>