cfl3d linux 编译,CMake build system for cfl3d
@@ -0,0 +1,379 @@
---
title: cfl3d+openmpi+gfortran编译和安装
---
#简介
cfl3d用intel的编译器和mpi会比较容易编译,不再详述。本文主要讲述用gfortran的情况
cfl3d依赖于cgns, fortran编译器和mpi
- mpi:只要是符合mpi1.1的标准的MPI应该都可以的,mpich, openmpi, intelmpi都可以
- fortran编译器:gfortran, ifort都可以;
- cgns库:不是必须的,但是有个算例会用到,用apt-get安装的cgns库在链接的时候会找不到hdf5库。
- 所以根据cfl3d说明和网上的资料,本文选择cgns 2.5.5来进行自主编译
#下载和解压cfl3d 6.7 开源版本
```shell
cd $HOME
mkdir cfl3d
cd cfl3d
git clone https://github.com/nasa/CFL3D.git
```
这样就在`$HOME/cfl3d/CFL3D`中下载到了所有源代码。
#MPI和gfortran
在ubuntu下
```shell
sudo apt-get install libopenmpi-dev gfortran build-essential -y
```
在RHEL/Centos下
```shell
sudo yum install openmpi-devel gcc gcc-gfortran
```
#下载和安装cgns
```shell
cd $HOME/cfl3d
wget "http://jaist.dl.sourceforge.net/project/cgns/cgnslib_2.5/Release 5/cgnslib_2.5-5.tar.gz" -O cgnslib_2.5-5.tar.gz
tar xf cgnslib_2.5-5.tar.gz
mkdir cgns
mkdir cgns/include
mkdir cgns/lib
cd cgnslib_2.5-5
./configure --prefix=../cgns #这是按照最简单的配置进行编译的,没有配hdf5,并行之类高级的东西。
make
make install
```
#生成cfl3d的makefile文件
运行`build/Install`
```shell
cd $HOME/cfl3d/CFL3D/build
./Install -fastio -cgnsdir=$HOME/cfl3d/cgns
```
之后会生成`build/makefile`文件可按下面进行更改。
```
# makefile
FFLAG = -O3 -fbacktrace -w -march=native -J../../$(CFLLIBSD)
FFLAG_SPEC = -O3 -fbacktrace -w -march=native -J../../$(CFLLIBSD)
PREC = -fdefault-real-8
PREC_MPI = -DDBLE_PRECSN
LFLAG =
## 没有libcommon.a在编译precfl3d时会出现undefined reference 错误。
LLIBS = -L/home/di/cfl3d/cgns/lib -lcgns ../../$(CFLLIBSD)/libcommon.a
LLIBS_SEQ = -L/home/di/cfl3d/cgns/lib -lcgns ../../$(CFLLIBSD)/libcommon.a
## 因为后面用了mpif90作为fortran编译器和mpicc作为c编译器,所以MPI_INCDIR设置为空
MPI_INCDIR =
CGNS_INCDIR = -I/home/di/cfl3d/cgns/include
CPP = cpp
CPPFLAG = -P
CPPOPT = -DFASTIO $(MPI_INCDIR) -DDIST_MPI $(PREC_MPI)
CPPOPT_SP = -DP3D_SINGLE -DLINUX -DCGNS $(PREC_MPI) $(CGNS_INCDIR)
CPPOPT_CMPLX = -DCMPLX
FTN = mpif90
CC = mpicc
CFLAG =
AROPT = rusc
RANLIB = true
INLINE =
```
说明:
- `MPI_INCDIR`为空,因为`FTN`和`CC`编译器已经设置为`mpi`包装过的版本了。
- `CGNS_INCDIR`似乎必须设置为绝对路径;
- `AROPT`设置为`rusc`会报警告,可以无视,也可以改成`cr`啥的。
- 原文件选项的意义:
- `-z muldefs`: 等价于`--allow-multiple-definition`,让编译器遇到多个定义时,用第一个而不是报致命错;
#最终编译
```shell
make cfl3d_seq cfl3d_mpi splitter cfl3d_tools
make precfl3d
make ronnie preronnie
make maggie
make splittercmplx cfl3dcmplx_seq cfl3dcmplx_mpi
```
##代码修正
###复数版本的错误
cfl3dcmplx_seq和cfl3dcmplx_mpi会因为cfl3dcmplx_libs编译不成功(spalart.F的turre的类型成了complex,不能比较大小)而失败。其他的都可以编译成功。
查看问题所在
```shell
di@ubuntu:~/cfl3d/CFL3D/build$ grep -n "turre.*.lt.*" cfl/libs/*.Fdi@ubuntu:~/cfl3d/CFL3D/build$ grep -n "turre.*.lt.*" cfl/libs/*.F
cfl/libs/barth3d.F:1863: if((real(turre(j,k,i)+vist3d(j,k,i))) .lt. 1.e-12) then
cfl/libs/foureqn.F:1876: if (real(turre(j,k,i,4)) .lt. 400.) then
cfl/libs/foureqn.F:1880: + real(turre(j,k,i,4)) .lt. 596.) then
cfl/libs/foureqn.F:1885: + real(turre(j,k,i,4)) .lt. 1200.) then
cfl/libs/global.F:3818: . ' automatically to turre...plt'
cfl/libs/global.F:3833: . ' automatically to turre...plt'
cfl/libs/spalart.F:547: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:611: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:674: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:787: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:850: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:912: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1026: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1092: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1157: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1297: rd = turre(j,k,i)/(sqrt(velterm)*akarman*akarman*
cfl/libs/spalart.F:1414: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1480: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1643: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1738: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1832: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:1945: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2029: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2112: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2215: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2301: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2386: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/spalart.F:2463: + (real(turre(j,k,i)+vist3d(j,k,i))) .lt. 1.e-12) then
cfl/libs/spalart.F:2468: + (real(turre(j,k,i)+vist3d(j,k,i))) .lt. 0.) then
cfl/libs/spalart.F:2503: if (i_saneg .eq. 1 .and. turre(j,k,i) .lt. 0.) then
cfl/libs/twoeqn.F:3344: d5 = re*beta5*ft*turre(j,k,i,1)**1.5/(sqrt(rt)+delta)
```
说明没有加real是主要的问题!
解决方案:turre(j,k,i)修改为了real(turre(j,k,i))
```shell
sed -i -e "s/\sturre(j,k,i)\s/ real(turre(j,k,i))/g" ../source/cfl3d/libs/spalart.F
sed -i -e "s/sbar \.ge\. -0\.7\*ss/real(sbar) .ge. -0.7*real(ss)/g" ../source/cfl3d/libs/spalart.F
```
sed所用的正则表达式可以在http://regexr.com/编辑和测试得到。
### maggie错误
maggie有位于`cputim.F`关于`ETIME`函数的错误,这是因为gfortran的ETIME和其他编译器不同,多带了一个参数。利用gfortran自带定义的`__GFORTRAN__`宏可以进行条件编译。
```fortran
! cputim.F :109
!#if defined ETFLAG
! call etime_(tm)
! call itime_(ia)
!#else
! call etime(tm)
! call itime(ia)
!#endif
#if defined ETFLAG
call etime_(tm)
call itime_(ia)
#elif defined __GFORTRAN__
call etime(tm(1:2),tm(3))
call itime(ia)
#else
call etime(tm)
call itime(ia)
#endif
```
# 设置链接
```shell
cd $HOME/cfl3d/CFL3D
mkdir bin
cd bin
## basic
ln -s ../build/cfl/seq/cfl3d_seq
## parallel version
ln -s ../build/cfl/mpi/cfl3d_mpi
## mesh block splitter
ln -s ../build/split/seq/splitter
## memory usage estimator
ln -s ../build/precfl/seq/precfl3d
## overset mesh related tool
ln -s ../build/mag/seq/maggie
## mesh deformation tool and its memory usage estimator
ln -s ../build/ron/seq/ronnie
ln -s ../build/preron/seq/preronnie
## complex version of cfl3d which is used to compulate flight derivative
ln -s ../build/cflcmplx/seq/cfl3dcmplx_seq
ln -s ../build/cflcmplx/mpi/cfl3dcmplx_mpi
ln -s ../build/splitcmplx/seq/splittercmplx
## cfl3d_tools
ln -s ../build/tools/seq/v6inpdoubhalf
ln -s ../build/tools/seq/Get_FD
ln -s ../build/tools/seq/initialize_field
ln -s ../build/tools/seq/nmf_to_cfl3dinput
ln -s ../build/tools/seq/cgns_to_cfl3dinput
ln -s ../build/tools/seq/v6inpswitchijk
ln -s ../build/tools/seq/v6_ronnie_mod
ln -s ../build/tools/seq/moovmaker
ln -s ../build/tools/seq/grid_perturb_cmplx
ln -s ../build/tools/seq/v6_restart_mod
ln -s ../build/tools/seq/gridswitchijk
ln -s ../build/tools/seq/cfl3d_to_nmf
ln -s ../build/tools/seq/cgns_readhist
ln -s ../build/tools/seq/p3d_to_cfl3drst
ln -s ../build/tools/seq/everyother_xyz
ln -s ../build/tools/seq/p3d_to_INGRID
ln -s ../build/tools/seq/v6_ronnie_mod.F90
ln -s ../build/tools/seq/INGRID_to_p3d
ln -s ../build/tools/seq/grid_perturb
ln -s ../build/tools/seq/cfl3dinp_to_FVBND
ln -s ../build/tools/seq/cfl3d_to_pegbc
ln -s ../build/tools/seq/plot3dg_to_cgns
ln -s ../build/tools/seq/XINTOUT_to_ovrlp
```
# 测试算例
测试算例的地址在:
https://cfl3d.larc.nasa.gov/Cfl3dv6/cfl3dv6_testcases.html
可以通过如下脚本下载所有测试算例
```shell
cd $HOME/cfl3d
mkdir TestCases
cd TestCases
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplate/Flatplate.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplateskew/Flatplateskew.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplateyplus/Flatplateyplus.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Backstep/Backstep.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Transdiff/Transdiff.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/NACA_4412/NACA_4412.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/RAE_Sensitivity/RAE_Sensitivity.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Ramp/Ramp.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Cylinder/Timeaccstudy.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/N0012/Spaceaccstudy.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Ejectornozzle/Ejectornozzle.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Pitch/Pitch0012.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Rotorstator/Rotorstator.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Hump/Humpcase.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Curvature/SoMellor.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/Axibump/Axibump.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ONERA_M6/ONERA_M6.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ARA_M100/ARA_M100.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ARA_M100_XMERA/ARA_M100_XMERA.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/Delta/Delta_cgns.tar.Z
```
# 总结
上述修正已经提交到我的https://github.com/chengdi/CFL3D了,所以可以用以下脚本安装所有东西。
```shell
# MPI和fortran,UBUNTU为例
sudo apt-get update
sudo apt-get install libopenmpi-dev gfortran build-essential git -y
# 下载cfl3d代码
cd $HOME
mkdir cfl3d
cd cfl3d
git clone https://github.com/chengdi/CFL3D.git
# cgns代码和安装
cd $HOME/cfl3d
wget "http://jaist.dl.sourceforge.net/project/cgns/cgnslib_2.5/Release 5/cgnslib_2.5-5.tar.gz" -O cgnslib_2.5-5.tar.gz
tar xf cgnslib_2.5-5.tar.gz
mkdir cgns
mkdir cgns/include
mkdir cgns/lib
cd cgnslib_2.5-5
./configure --prefix=../cgns #这是按照最简单的配置进行编译的,没有配hdf5,并行之类高级的东西。
make
make install
# 生成makefile
cd $HOME/cfl3d/CFL3D/build
./Install -fastio -cgnsdir=$HOME/cfl3d/cgns
# 编译cfl3d
cd $HOME/cfl3d/CFL3D/build
cp makefile_linux_gfortran_openmpi makefile #覆盖掉新生成的makefile
make cfl3d_seq cfl3d_mpi splitter cfl3d_tools
make precfl3d
make ronnie preronnie
make maggie
make splittercmplx cfl3dcmplx_seq cfl3dcmplx_mpi
# 建立链接
cd $HOME/cfl3d/CFL3D
mkdir bin
cd bin
## basic
ln -s ../build/cfl/seq/cfl3d_seq
## parallel version
ln -s ../build/cfl/mpi/cfl3d_mpi
## mesh block splitter
ln -s ../build/split/seq/splitter
## memory usage estimator
ln -s ../build/precfl/seq/precfl3d
## overset mesh related tool
ln -s ../build/mag/seq/maggie
## mesh deformation tool and its memory usage estimator
ln -s ../build/ron/seq/ronnie
ln -s ../build/preron/seq/preronnie
## complex version of cfl3d which is used to compulate flight derivative
ln -s ../build/cflcmplx/seq/cfl3dcmplx_seq
ln -s ../build/cflcmplx/mpi/cfl3dcmplx_mpi
ln -s ../build/splitcmplx/seq/splittercmplx
## cfl3d_tools
ln -s ../build/tools/seq/v6inpdoubhalf
ln -s ../build/tools/seq/Get_FD
ln -s ../build/tools/seq/initialize_field
ln -s ../build/tools/seq/nmf_to_cfl3dinput
ln -s ../build/tools/seq/cgns_to_cfl3dinput
ln -s ../build/tools/seq/v6inpswitchijk
ln -s ../build/tools/seq/v6_ronnie_mod
ln -s ../build/tools/seq/moovmaker
ln -s ../build/tools/seq/grid_perturb_cmplx
ln -s ../build/tools/seq/v6_restart_mod
ln -s ../build/tools/seq/gridswitchijk
ln -s ../build/tools/seq/cfl3d_to_nmf
ln -s ../build/tools/seq/cgns_readhist
ln -s ../build/tools/seq/p3d_to_cfl3drst
ln -s ../build/tools/seq/everyother_xyz
ln -s ../build/tools/seq/p3d_to_INGRID
ln -s ../build/tools/seq/v6_ronnie_mod.F90
ln -s ../build/tools/seq/INGRID_to_p3d
ln -s ../build/tools/seq/grid_perturb
ln -s ../build/tools/seq/cfl3dinp_to_FVBND
ln -s ../build/tools/seq/cfl3d_to_pegbc
ln -s ../build/tools/seq/plot3dg_to_cgns
ln -s ../build/tools/seq/XINTOUT_to_ovrlp
# 下载算例
cd $HOME/cfl3d
mkdir TestCases
cd TestCases
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplate/Flatplate.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplateskew/Flatplateskew.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Flatplateyplus/Flatplateyplus.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Backstep/Backstep.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Transdiff/Transdiff.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/NACA_4412/NACA_4412.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/RAE_Sensitivity/RAE_Sensitivity.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Ramp/Ramp.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Cylinder/Timeaccstudy.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/N0012/Spaceaccstudy.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Ejectornozzle/Ejectornozzle.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Pitch/Pitch0012.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Rotorstator/Rotorstator.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Hump/Humpcase.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/2DTestcases/Curvature/SoMellor.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/Axibump/Axibump.tar.gz
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ONERA_M6/ONERA_M6.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ARA_M100/ARA_M100.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/ARA_M100_XMERA/ARA_M100_XMERA.tar.Z
wget https://cfl3d.larc.nasa.gov/Cfl3dv6/3DTestcases/Delta/Delta_cgns.tar.Z
```
相关文章:

Request.getInputStrema只能读取一次的分析过程
1. 我们先来看一下继承关系HttpServletRequest 接口继承ServletRequest接口 public abstract interface ServletRequest{ public abstract ServletInputStream getInputStream() throws IOException; } 从上面可知request.getInputStream()返回的是ServletInputSt…

windows nodejs mysql_windows server 安装 mysql + nondejs连接mysql
下载安装下载完后,将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\mysql 下。接下来需要配置下 MySQL 的配置文件打开刚刚解压的文件夹 C:\mysql ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息&…

多线程并行和并发的区别
并行就是两个任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU) 并发是指两个任务都请求运行,而处理器只能按受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都…

php dropdownlist,为何activitieDropdownlist的值始终无法获取到
为什么activitieDropdownlist的值始终无法获取到?视图层view控制器层public function actionDbdplist(){$m_subjectlist new SubjectList();$m_gradelist new Grade;$this->subject_list SubjectList::model()->findAll();$this->grade_list Grade::mo…

python之内置函数
一、 内置函数 什么是内置函数?就是python给你提供的可以直接使用的函数。到目前为止在python中一共有68个内置函数 经过我两个多小时的制作终于弄出了个能看的东西↓↓↓↓↓↓ 思维导图链接:https://www.processon.com/view/link/5b72a285e4b053a09c33e534 转载于…

远程桌面linux服务器配置,linux平台下远程桌面服务器的安装和设置
一、xdm 方式前提:安装linux时一定要选上xwindow,这是最基本的前提,不安装它,是绝对没有图形界面的。**********************************************************基本概念和相关命令说明:XDMCP(X Display Manager Co…

关于字符串的分割问题
1、如何快速的将一个字符串分割成一个个字符? Scanner scnew Scanner(System.in);System.out.println("请输入一个字符串:");String strsc.next();System.out.println("输入的字符串的长度为:"str.length());char [] ast…

java创建对象_java 创建对象的五种方式
通过 Class 对象的 getConstructor 可以获取 java.lang.reflect.Constructor 对象Constructor 对象用来描述类的构造方法,通过给 getConstructor 方法传入不同的 Class 对象,可以获取到对应的无参或有参数的构造方法通过 Constructor 的 newInstance 方法…

php拍照从手机相册中选择,微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例...
本文实例讲述了微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法。分享给大家供大家参考,具体如下:目前中js-sdk 1.0版本中,预览图片提供了2个接口,接口的定义参考官方文档1.预览网络图片http链接的2.预览本地图片wenxin:…

BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)
题意 有 \(n\) 个人,每个人手里有一把手枪。一开始所有人都选定一个人瞄准(有可能瞄准自己)。然后他们按某个顺序开枪,且任意时刻只有一个人开枪。 因此,对于不同的开枪顺序,最后死的人也不同。 问最后死的…

Maven跳过测试
Maven跳过测试用例 在properties中声明<properties><maven.test.skip>true</maven.test.skip> </properties> 或者 <properties><skipTests>true</skipTests> </properties> 在执行命令中声明mvn test -Dmaven.test.skiptrue …

Linux内核 题目,《Linux内核完全注释》部分习题答案
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼第3章 内核引导和启动过程2.为什么不直接将system模块搬到0x00000处而是先搬到0x10000处,再搬到0x00000处呢?在机器开机上电时,ROM BIOS将bootsect代码加载到内存的固定位置0x7c00处,…

java jdk 1.8 安装_下载、安装、配置 java jdk1.8
近期配置react native的开发环境,所以就从配置环境开始。rn的环境配置有那么几项,其中重要的一个就是java jdk(Java Development Kit 的缩写),那么以下就是下载、安装还有配置的流程1.下载java jdk 1.8在地址栏输入 java jdk,如下图所示&…

liunx php redis扩展,CentOS 7下安装php-redis扩展及简单使用
前言:在本篇文章中,我将给大家介绍如何在CentOS7上安装PHP-Redis扩展以及一些简单的实用,关于如何在Centos上安装redis的,可以参考想要在php中操作redis,那就必须安装php-redis扩展,就比如MySQL一样&#x…

Luogu 2470 [SCOI2007]压缩
和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是否存在M 因为这题只能是二的幂次倍压缩,所以转移的时候枚举中点chk是否合法…

做图形处理Linux小型主机,8个优秀的linux图形图像工具
对艺术家、摄影师、动画师和设计师而言,Linux是一个有潜力的平台。廉价的硬件,优秀的免费软件,任何有才华的人都能在上面创作专业水平的计算机图形。开源社区提供了丰富的开源图形工具,但要慧眼识珠并非易事。这里介绍的优秀图形工…

使用laravel框架的eloquent\DB模型连接多个数据库
1、配置.env文件 DB_HOST_TRAILER127.0.0.1DB_PORT_TRAILER3306DB_DATABASE_TRAILERhtms_trailerDB_USERNAME_TRAILERrootDB_PASSWORD_TRAILER DB_HOST_FREIGHT127.0.0.1DB_PORT_FREIGHT3306DB_DATABASE_FREIGHThangli_saasDB_USERNAME_FREIGHTrootDB_PASSWORD_FREIGHT 2、配置…

java openfile busy_android java.io.IOException: open failed: EBUSY (Device or resource busy)
今天遇到一个奇怪的问题,测试在程序的下载界面,下载一个文件第一次下载成功,删除后再下载结果下载报错,程序:file.createNewFile();报错:java.io.IOException: open failed: EBUSY (Device or resource bus…

java service注入失败,使用spring向service里面注入dao不成功。
使用spring向service里面注入dao不成功。求救啊!本帖最后由 PaperStar 于 2013-12-26 19:29:20 编辑页面调用action,action调用service,service调用dao用Debug查看action调用service方法时service有值,但是service调用dao时&#…

下面为初学者分享一下SQL 数据库学习资料
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- 开…

linux7设置时间,CentOS 7 设置日期和时间
现代操作系统分为以下两种类型的时钟:实时时钟(Real-Time Clock,RTC),通常称为硬件时钟(一般是系统主板上的集成电路),它完全独立于操作系统的当前状态,即使在计算机关闭时也能运行。系统时钟,也称为软件时…

SQLMap安装步骤
SQLMap是利用Python语言写的,所以需要将Python这个语言环境给安装上 : 1、首先下载Python(这里Python版本为2.7.2,可以下载不同或高版本的) 2、然后在下载sqlmap(http://sqlmap.org) 3、这两个软件下载完成后ÿ…

am5718_AM5718如何扩大内存 - Sitara™ Cortex-A8 和 ARM9 微处理器 - Sitara™ Cortex-A8 和 ARM9 微处理器 - E2E™ 中文支持论坛...
谢谢了Shine,你的资料和建议非常到位,按您的建议,修改了board.c以下两处,问题解决了。1:board/ti/am57xx/board.c文件static const struct dmm_lisa_map_regs am571x_idk_lisa_regs {.dmm_lisa_map_3 0x80640100,.is_ma_present…

亚马逊刊登php代码,最全的亚马逊刊登listing工具了解一下
如果你是亚马逊FBA卖家,那么你可能会错过很多有用的亚马逊listing工具。这些listing工具可以批量上传listing,同时还可以记录产品特征,以及打印运输标签。1、易仓刊登系统易仓刊登系统是一款易仓基于已有ERP客户需求研发的一套平台产品刊登系…

linux重命名tar命令,linux常用操作指令4 —— 文件操作相关命令(mkdir、touch、rm、mv、cp、cat 、 find 、tar、chmod)...
文件操作相关命令文件操作相关命令1、创建文件夹mkdir2、创建文件touch3、移动文件夹mv(类似于剪切)4、删除rm5、重命名mv6、复制cp7、查看文件(cat、head、tail..)8、查找文件 find (重要)9、归档压缩tar10、修改文件权限chmod参考文件操作相关命令1、创建文件夹mkdir# mkdir …

后台生成小程序码
工作需要,根据动态参数生成小程序二维码。 找了下开发API :https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 选择了B接口,可以无限生成,只是参数有点限制,但是可以满足需求,开搞。 一、…
2017-02-20 注册.Net Framework4.0
在使用IIS发布Web应用程序时,有时会遇到Asp.Net 4.0尚未在Web服务器上注册的问题,需要手动注册下.Net Framework 4.0。 注册.net Framwork4.0 步骤,以windows7系统为例,注册 步骤如下: 64位操作系统: 1. …

java字符存储,在什么编码是Java字符存储在?
Is the Java char type guaranteed to be stored in any particular encoding?Edit: I phrased this question incorrectly. What I meant to ask is are char literals guaranteed to use any particular encoding?解决方案"Stored" where? All Strings in Java …

matlab 仿真步长,MATLAB Simulink变步长仿真与固定步长仿真简单对比
今天晚上翻了一下资料发现,关于变步长以及固定步长仿真的理解我之前是由错误理解的。当时没有做什么认真的思考活着尝试就自己给自己下了一个结论:变步长仿真会比较精确,但是可能会消耗更多的计算机资源!错!大错特错&a…

JS设计模式(13)状态模式
什么是状态模式? 定义:将事物内部的每个状态分别封装成类,内部状态改变会产生不同行为。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用&am…