安装 geometricVofExt,遇到CGAL的链接和指向问题。
问题语句为 include $(GENERAL_RULES)/CGAL
请大佬指点一下,如何解决?!
安装过程如下:
CGAL 安装
安装后,检查是否安装成功:
****************************** Check CGAL ******************************
cgal=true
flavour=library
root="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3"
include="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include"
library="/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/lib64"
********************************* Done *********************************
其中,ABCD表示 home 目录。
src/CGALVof 目录编译:
使用原始的 options 文件
无法编译 libCGALVof.so
>> wmake libso CGALVof
make: *** /home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/rules/General/CGAL: Is a directory. Stop.
make: *** /home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/rules/General/CGAL: Is a directory. Stop.
wmake error: file 'Make/linux64GccDPInt32Opt/sourceFiles' could not be created in /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof
其中,原始 options 文件为
CGAL_EXACT = /*-DCGAL_DONT_USE_LAZY_KERNEL*/
CGAL_INEXACT = -DCGAL_INEXACT
include $(GENERAL_RULES)/CGAL
c++CGALWARN = -Wno-old-style-cast
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/fileFormats/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-ICGALVof/lnInclude \
${CGAL_EXACT} \
${CGAL_INEXACT} \
${CGAL_INC} \
${c++CGALWARN} \
-fopenmp \
-frounding-math
EXE_LIBS = \
${CGAL_LIBS} \
-lfiniteVolume \
-lfileFormats \
-lsurfMesh \
-ldynamicFvMesh \
-lmeshTools
**根据错误提示,定位问题出在语句 include $(GENERAL_RULES)/CGAL **.
src/CGALVof 目录编译:
编译前导入环境变量
注释 options 文件中的语句 /*include $(GENERAL_RULES)/CGAL*/ **.
编译前导入的环境变量为
#!/bin/bash
export CGAL_INC=-I${WM_THIRD_PARTY_DIR}/platforms/linux64Gcc/CGAL-4.14.3/include
export CGAL_LIBS=-L${WM_THIRD_PARTY_DIR}/platforms/linux64Gcc/CGAL-4.14.3/lib64
编译命令为
source bashrc # bashrc 文件即为导入的环境变量
wclean
wmake
成功编译出 libCGALVof.so
applications/utilities/setVofField 编译
根据第 3 步的经验,注释 options 文件中的语句 /*include $(GENERAL_RULES)/CGAL*/ **.
编译结果为
Making dependencies: setVofField.C
g++ -std=c++17 -m64 -pthread -DOPENFOAM=2506 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/finiteVolume/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/fileFormats/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/surfMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicFvMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/overset/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/meshTools/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/phaseSystemModels/twoPhaseInter/incompressibleInterPhaseTransportModel/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/sampling/lnInclude -DCGAL_INEXACT -I/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include -Wno-old-style-cast -fopenmp -frounding-math -iquote. -IlnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OpenFOAM/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OSspecific/POSIX/lnInclude -fPIC -c setVofField.C -o Make/linux64GccDPInt32Opt/setVofField.o
In file included from /usr/include/boost/type_index.hpp:25,
from /usr/include/boost/variant/variant.hpp:21,
from /usr/include/boost/variant.hpp:17,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Object.h:38,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/kernel_basic.h:34,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/basic.h:47,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Cartesian/Cartesian_base.h:29,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Simple_cartesian.h:29,
from /home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:29,
from /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude/CGALKernel.H:55,
from /home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude/CGALSurfaceMesh.H:41,
from setVofField.C:36:
/usr/include/boost/function_output_iterator.hpp:14:1: note: ‘#pragma message: This header is deprecated. Use <boost/iterator/function_output_iterator.hpp> instead.’
14 | BOOST_HEADER_DEPRECATED("<boost/iterator/function_output_iterator.hpp>")
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
36 | BOOST_PRAGMA_MESSAGE(
| ^~~~~~~~~~~~~~~~~~~~
In file included from setVofField.C:43:
/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude/reconstruction.H:318:13: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
318 | const bool willMapAlphaField() const
| ^~~~~
In file included from setVofField.C:98:
setAlphaField.H: In function ‘int main(int, char**)’:
setAlphaField.H:32:35: warning: unused variable ‘aridCells’ [-Wunused-variable]
32 | const DynamicList<label>& aridCells(cellLocs.aridCells());
| ^~~~~~~~~
In file included from setVofField.C:136:
setAlphaField.H:32:35: warning: unused variable ‘aridCells’ [-Wunused-variable]
32 | const DynamicList<label>& aridCells(cellLocs.aridCells());
| ^~~~~~~~~
g++ -std=c++17 -m64 -pthread -DOPENFOAM=2506 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -Wno-unknown-pragmas -O3 -DNoRepository -ftemplate-depth-100 -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/finiteVolume/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/fileFormats/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/surfMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicFvMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/dynamicMesh/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/overset/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/meshTools/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/CGALVof/lnInclude -I/home/ABCD/OpenFOAM/ABCD-v2506/modules/geometricVofExt/src/SimPLIC/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/phaseSystemModels/twoPhaseInter/incompressibleInterPhaseTransportModel/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/sampling/lnInclude -DCGAL_INEXACT -I/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/include -Wno-old-style-cast -fopenmp -frounding-math -iquote. -IlnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OpenFOAM/lnInclude -I/home/ABCD/OpenFOAM/OpenFOAM-v2506/src/OSspecific/POSIX/lnInclude -fPIC -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPInt32Opt/setVofField.o -L/home/ABCD/OpenFOAM/OpenFOAM-v2506/platforms/linux64GccDPInt32Opt/lib \
-L/home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib -L/home/ABCD/OpenFOAM/ThirdParty-v2506/platforms/linux64Gcc/CGAL-4.14.3/lib64 -lfiniteVolume -lfileFormats -lsurfMesh -ldynamicFvMesh -loverset -lmeshTools -lwaveModels -lCGALVof -lSimPLIC -limmiscibleIncompressibleTwoPhaseMixture -lsampling -lOpenFOAM -ldl \
-lm -o /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/bin/setVofField
/usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `CGAL::Interval_nt<false>::Test_runtime_rounding_modes::Test_runtime_rounding_modes()':
setVofField.C:(.text._ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC5Ev]+0xc9): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: setVofField.C:(.text._ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb0EE27Test_runtime_rounding_modesC5Ev]+0xe8): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `CGAL::Interval_nt<true>::Test_runtime_rounding_modes::Test_runtime_rounding_modes()':
setVofField.C:(.text._ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC5Ev]+0xc9): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: setVofField.C:(.text._ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC2Ev[_ZN4CGAL11Interval_ntILb1EE27Test_runtime_rounding_modesC5Ev]+0xe8): undefined reference to `CGAL::assertion_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: Make/linux64GccDPInt32Opt/setVofField.o: in function `_GLOBAL__sub_I_setVofField.C':
setVofField.C:(.text.startup+0x2e6): undefined reference to `CGAL::Random::Random()'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_get_emin'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_com'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_swap'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_init'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::precondition_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_copyi'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_cmp'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_set_q'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::postcondition_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_add_n'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_set_d'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_get_d'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_sub'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpz_init_set_ui'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_clear'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_sqr'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_set_emin'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_sub_n'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_mul'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_div'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::Random::Random(unsigned int)'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpz_init_set_si'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `mpfr_subnormalize'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_set'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpn_mul'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `CGAL::warning_fail(char const*, char const*, int, char const*)'
/usr/bin/ld: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/lib/libCGALVof.so: undefined reference to `__gmpq_add'
collect2: error: ld returned 1 exit status
make: *** [/home/ABCD/OpenFOAM/OpenFOAM-v2506/wmake/makefiles/general:182: /home/ABCD/OpenFOAM/ABCD-v2506/platforms/linux64GccDPInt32Opt/bin/setVofField] Error 1
setShapedFields 的编译错误与上面的类似。