導航:首頁 > 源碼編譯 > ob開源編譯

ob開源編譯

發布時間:2023-08-21 04:36:30

⑴ 使用nmake編譯Gdal源代碼(Win10+VS2022)

為了編譯Gdal-master的源碼,需要PROJ的支持,而PROJ又需要SQLite的支持。

SQLite、PROJ、Gdal-master的源碼及編譯可參見網頁:

https://www.toutiao.com/a7063703225425199623/?log_from=fe233e3892be3_1644664643652

也可使用nmake在命令行創建(參考網頁 https://trac.osgeo.org/gdal/wiki/BuildingOnWindows

使用命令行,進入VS2022開發者命令行窗口

cd D:ProgramsMicrosoft Visual

D:

vcvars64.bat


cd D:SourceCodesgdal-master

set BINDIR=d:programsgdalgdal-bin

set DATADIR=d:programsgdalgdal-data

set INCDIR=d:programsgdalgdal-include

set LIBDIR=d:programsgdalgdal-lib

修改文件「nmake.opt」的內容:

(1)將

#PROJ_INCLUDE = -Id:install-projlocalinclude

改為

PROJ_INCLUDE = -ID:My3rdPartyinclude

(2)將

#PROJ_LIBRARY = d:install-projlocallibproj_6_0.lib shell32.lib ole32.lib

改為

PROJ_LIBRARY = D:My3rdPartylibproj.lib shell32.lib ole32.lib

依次使用下列命令, 創建x64的Release版本

nmake -f makefile.vc MSVC_VER=1930 WIN64=1

nmake /f makefile.vc install MSVC_VER=1930 WIN64=yes

nmake /f makefile.vc devinstall MSVC_VER=1930 WIN64=yes

執行完畢後,目錄「d:programsgdal」中的內容如下(使用命令 「tree /f d:programsgdal」 列出)

D:PROGRAMSGDAL

gdal-bin

gdal303.dll

gdaladdo.exe

gdalbuildvrt.exe

gdaldem.exe

gdalenhance.exe

gdalinfo.exe

gdallocationinfo.exe

gdalmanage.exe

gdalmdiminfo.exe

gdalmdimtranslate.exe

gdalsrsinfo.exe

gdaltindex.exe

gdaltransform.exe

gdalwarp.exe

gdal_contour.exe

gdal_create.exe

gdal_grid.exe

gdal_rasterize.exe

gdal_translate.exe

gdal_viewshed.exe

gnmanalyse.exe

gnmmanage.exe

nearblack.exe

ogr2ogr.exe

ogrinfo.exe

ogrlineref.exe

ogrtindex.exe

gdalplugins

drivers.ini

gdal-data

bag_template.xml

cubewerx_extra.wkt

default.rsc

ecw_cs.wkt

eedaconf.json

epsg.wkt

esri_StatePlane_extra.wkt

gdalicon.png

GDALLogoBW.svg

GDALLogoColor.svg

GDALLogoGS.svg

gdalmdiminfo_output.schema.json

gdalvrt.xsd

gmlasconf.xml

gmlasconf.xsd

gml_registry.xml

grib2_center.csv

grib2_process.csv

grib2_subcenter.csv

grib2_table_4_2_0_0.csv

grib2_table_4_2_0_1.csv

grib2_table_4_2_0_13.csv

grib2_table_4_2_0_14.csv

grib2_table_4_2_0_15.csv

grib2_table_4_2_0_16.csv

grib2_table_4_2_0_17.csv

grib2_table_4_2_0_18.csv

grib2_table_4_2_0_19.csv

grib2_table_4_2_0_190.csv

grib2_table_4_2_0_191.csv

grib2_table_4_2_0_2.csv

grib2_table_4_2_0_20.csv

grib2_table_4_2_0_3.csv

grib2_table_4_2_0_4.csv

grib2_table_4_2_0_5.csv

grib2_table_4_2_0_6.csv

grib2_table_4_2_0_7.csv

grib2_table_4_2_10_0.csv

grib2_table_4_2_10_1.csv

grib2_table_4_2_10_191.csv

grib2_table_4_2_10_2.csv

grib2_table_4_2_10_3.csv

grib2_table_4_2_10_4.csv

grib2_table_4_2_1_0.csv

grib2_table_4_2_1_1.csv

grib2_table_4_2_1_2.csv

grib2_table_4_2_20_0.csv

grib2_table_4_2_20_1.csv

grib2_table_4_2_20_2.csv

grib2_table_4_2_2_0.csv

grib2_table_4_2_2_3.csv

grib2_table_4_2_2_4.csv

grib2_table_4_2_2_5.csv

grib2_table_4_2_3_0.csv

grib2_table_4_2_3_1.csv

grib2_table_4_2_3_2.csv

grib2_table_4_2_3_3.csv

grib2_table_4_2_3_4.csv

grib2_table_4_2_3_5.csv

grib2_table_4_2_3_6.csv

grib2_table_4_2_4_0.csv

grib2_table_4_2_4_1.csv

grib2_table_4_2_4_10.csv

grib2_table_4_2_4_2.csv

grib2_table_4_2_4_3.csv

grib2_table_4_2_4_4.csv

grib2_table_4_2_4_5.csv

grib2_table_4_2_4_6.csv

grib2_table_4_2_4_7.csv

grib2_table_4_2_4_8.csv

grib2_table_4_2_4_9.csv

grib2_table_4_2_local_Canada.csv

grib2_table_4_2_local_HPC.csv

grib2_table_4_2_local_index.csv

grib2_table_4_2_local_MRMS.csv

grib2_table_4_2_local_NCEP.csv

grib2_table_4_2_local_NDFD.csv

grib2_table_4_5.csv

grib2_table_versions.csv

gt_datum.csv

gt_ellips.csv

header.dxf

inspire_cp_BasicPropertyUnit.gfs

inspire_cp_CadastralBoundary.gfs

inspire_cp_CadastralParcel.gfs

inspire_cp_CadastralZoning.gfs

jpfgdgml_AdmArea.gfs

jpfgdgml_AdmBdry.gfs

jpfgdgml_AdmPt.gfs

jpfgdgml_BldA.gfs

jpfgdgml_BldL.gfs

jpfgdgml_Cntr.gfs

jpfgdgml_CommBdry.gfs

jpfgdgml_CommPt.gfs

jpfgdgml_Cstline.gfs

jpfgdgml_ElevPt.gfs

jpfgdgml_GCP.gfs

jpfgdgml_LeveeEdge.gfs

jpfgdgml_RailCL.gfs

jpfgdgml_RdArea.gfs

jpfgdgml_RdASL.gfs

jpfgdgml_RdCompt.gfs

jpfgdgml_RdEdg.gfs

jpfgdgml_RdMgtBdry.gfs

jpfgdgml_RdSgmtA.gfs

jpfgdgml_RvrMgtBdry.gfs

jpfgdgml_SBAPt.gfs

jpfgdgml_SBArea.gfs

jpfgdgml_SBBdry.gfs

jpfgdgml_WA.gfs

jpfgdgml_WL.gfs

jpfgdgml_WStrA.gfs

jpfgdgml_WStrL.gfs

LICENSE.TXT

netcdf_config.xsd

nitf_spec.xml

nitf_spec.xsd

ogrvrt.xsd

osmconf.ini

ozi_datum.csv

ozi_ellips.csv

pci_datum.txt

pci_ellips.txt

pdfcomposition.xsd

pds4_template.xml

plscenesconf.json

ruian_vf_ob_v1.gfs

ruian_vf_st_uvoh_v1.gfs

ruian_vf_st_v1.gfs

ruian_vf_v1.gfs

s57agencies.csv

s57attributes.csv

s57expectedinput.csv

s57objectclasses.csv

seed_2d.dgn

seed_3d.dgn

stateplane.csv

template_tiles.mapml

tms_LINZAntarticaMapTileGrid.json

tms_MapML_APSTILE.json

tms_MapML_CBMTILE.json

tms_NZTM2000.json

trailer.dxf

vdv452.xml

vdv452.xsd

vicar.json

gdal-include

armadillo_headers.h

cplkeywordparser.h

cpl_alibaba_oss.h

cpl_atomic_ops.h

cpl_auto_close.h

cpl_aws.h

cpl_azure.h

cpl_compressor.h

cpl_config.h

cpl_config_extras.h

cpl_conv.h

cpl_cpu_features.h

cpl_csv.h

cpl_curl_priv.h

cpl_error.h

cpl_error_internal.h

cpl_float.h

cpl_google_cloud.h

cpl_hash_set.h

cpl_http.h

cpl_json.h

cpl_json_header.h

cpl_json_streaming_parser.h

cpl_json_streaming_writer.h

cpl_list.h

cpl_md5.h

cpl_mem_cache.h

cpl_minixml.h

cpl_minizip_ioapi.h

cpl_minizip_unzip.h

cpl_minizip_zip.h

cpl_multiproc.h

cpl_odbc.h

cpl_port.h

cpl_progress.h

cpl_quad_tree.h

cpl_sha1.h

cpl_sha256.h

cpl_spawn.h

cpl_string.h

cpl_swift.h

cpl_time.h

cpl_userfaultfd.h

cpl_vax.h

cpl_virtualmem.h

cpl_vsi.h

cpl_vsil_curl_class.h

cpl_vsil_curl_priv.h

cpl_vsil_plugin.h

cpl_vsi_error.h

cpl_vsi_virtual.h

cpl_worker_thread_pool.h

cpl_zlib_header.h

gdal.h

gdalexif.h

gdalgeorefpamdataset.h

gdalgrid.h

gdalgrid_priv.h

gdaljp2abstractdataset.h

gdaljp2metadata.h

gdaljp2metadatagenerator.h

gdallinearsystem.h

gdalpansharpen.h

gdalpython.h

gdalsse_priv.h

gdalwarper.h

gdalwarpkernel_opencl.h

gdal_alg.h

gdal_alg_priv.h

gdal_csv.h

gdal_frmts.h

gdal_mdreader.h

gdal_pam.h

gdal_priv.h

gdal_proxy.h

gdal_rat.h

gdal_simplesurf.h

gdal_thread_pool.h

gdal_utils.h

gdal_version.h

gdal_vrt.h

gnm.h

gnmgraph.h

gnm_api.h

gvgcpfit.h

internal_qhull_headers.h

memdataset.h

nasakeywordhandler.h

ograpispy.h

ogrgeomediageometry.h

ogrpgeogeometry.h

ogrsf_frmts.h

ogr_api.h

ogr_attrind.h

ogr_core.h

ogr_expat.h

ogr_feature.h

ogr_featurestyle.h

ogr_geocoding.h

ogr_geometry.h

ogr_geos.h

ogr_geo_utils.h

ogr_libs.h

ogr_p.h

ogr_proj_p.h

ogr_sfcgal.h

ogr_spatialref.h

ogr_srs_api.h

ogr_srs_esri_names.h

ogr_swq.h

ogr_xerces.h

ogr_xerces_headers.h

rawdataset.h

thinplatespline.h

vrtdataset.h

gdal-lib

gdal_i.lib

⑵ c++中如何把類編譯成類似於庫文件,以後直接包含頭文件即可

請搜索「nmake makefile cl.exe lib」之類的關鍵字。
比如
-------------------------------
CL.exe
CL.exe是控制Microsoft C和C++編譯器與鏈接器的32位工具。編譯器產生通用對象文件格式(COFF)對象(.obj)文件。鏈接器產生可執行文件(.exe)或動態鏈接庫文件(DLL)。注意,所有編譯器選項都區分大小寫。若要編譯但不鏈接,請使用/c。使用NMAKE生成輸出文件。使用BSCMAKE支持類瀏覽。以下是一個完整的編譯器選項分類列表。

優化
選項 作用
/O1 創建小代碼
/O2 創建快速代碼
/Oa 假設沒有別名
/Ob 控制內聯展開
/Od 禁用優化
/Og 使用全局優化
/Oi 生成內部函數
/Op 改善浮點數一致性
/Os 代碼大小優先
/Ot 代碼速度優先
/Ow 假定在函數調用中使用別名
/Ox 使用最大優化 (/Ob1gity /Gs)
/Oy 省略框架指針

代碼生成
選項 作用
/clr 啟用C++的託管擴展並產生在公共語言運行庫上運行的輸出文件
/EH 指定異常處理模型
/G3 優化代碼以優選386處理器。在Visual C++ 5.0 中已經停用,編譯器將忽略此選項
/G4 優化代碼以優選486處理器。在 Visual C++ 5.0中已經停用,編譯器將忽略此選項
/G5 優化代碼以優選Pentium
/GB 與/G6等效;將_M_IX86的值設置為600
/Gd 使用__cdecl調用約定
/Ge 激活堆棧探測
/GF 啟用字元串池
/GH 調用掛鉤函數 _penter
/GL 啟用全程序優化
/Gm 啟用最小重新生成
/Gr 啟用運行時類型信息 (RTTI)
/Gr 使用__fastcall調用約定
/GS 控制堆棧探測
/GT 支持使用靜態線程本地存儲區分配的數據的纖程安全
/GX 啟用同步異常處理
/Gy 啟用函數級鏈接
/GZ 使用__stdcall調用約定
/MD 使用MSVCRT.lib創建多線程DLL
/MDd 使用MSVCRTD.lib 創建調試多線程DLL
/ML 使用LIBC.lib 創建單線程可執行文件
/MLd 使用LIBCD.lib 創建調試單線程可執行文件
/MT 使用LIBCMT.lib創建多線程可執行文件
/MTd 使用LIBCMTD.lib創建調試多線程可執行文件

輸出文件
選項 作用
/FA 創建列表文件設置列表文件名
/Fd 重命名程序資料庫文件
/Fe 重命名可執行文件
/Fm 創建映射文件
/Fo 創建對象文件
/Fp 指定預編譯頭文件名
/FR 生成瀏覽器文件
/Fx 將插入的代碼與源文件合並

……

鏈接
選項 作用
/F 設置堆棧大小
/LD 創建動態鏈接庫
/LDd 創建調試動態鏈接庫
/link 將指定的選項傳遞給LINK
/MD 使用MSVCRT.lib編譯以創建多線程DLL
/MDd 使用MSVCRTD.lib編譯以創建調試多線程DLL
/ML 使用LIBC.lib編譯以創建單線程可執行文件
/MLd 使用LIBCD.lib編譯以創建調試單線程可執行文件
/MT 使用LIBCMT.lib編譯以創建多線程可執行文件
/MTd 使用 LIBCMTD.lib 編譯以創建調試多線程可執行文件

……
……
……

更多的我就不貼出來了。。。msdn中對nmake作了詳細說明的。

下面一個nmake的makefile例子:

#命令
CC=cl.exe
DEL=del /Q /S

#頭文件與庫文件目錄
INCLUDES=
LIBS=

#編譯鏈接選項與宏定義
MT=MD ---------------(1)
DEFS=-DWIN32
MOD= ---------------(2)

#輸出文件
OUTPUT=test.exe
OBJS=main.obj

#內部變數
CFLAGS=/$(MT) $(INCLUDES) $(DEFS) /nologo
LINK=link $(MOD) /OUT:"$(OUTPUT)"

#依賴關系
all:$(OBJS)
$(LINK) $(OBJS)

main.obj:
$(CC) $(CFLAGS) main.cpp -Fo%|fF.obj

clean:
del /Q /S $(OBJS) $(OUTPUT)*

(1):
MD 使用MSVCRT.lib創建多線程DLL
MDd 使用MSVCRTD.lib 創建調試多線程 DLL
ML 使用LIBC.lib創建單線程可執行文件
MLd 使用LIBCD.lib創建調試單線程可執行文件
MT 使用LIBCMT.lib創建多線程可執行文件
MTd 使用LIBCMTD.lib創建調試多線程可執行文件
(2):
為空 生成可執行文件
/LIB 生成靜態鏈接庫
/DLL 生成動態鏈接庫

⑶ 從PLC上傳上來的程序,OB1怎麼就編譯不過呢

我也遇見過同樣的問題!正常運行的設備上傳的OB1發現加密,用解密軟體解密後就出現了和樓主一樣的問題了,後來沒有辦法因為確實要修改OB1中的程序,就只要重新寫編譯不過的程序了。其實編譯不過的都是些調用其它塊的指令,按正常的調用修改就可以了!

閱讀全文

與ob開源編譯相關的資料

熱點內容
單片機伺服器編譯 瀏覽:768
單口usb列印機伺服器是什麼 瀏覽:859
戰地五開伺服器要什麼條件 瀏覽:954
在word中壓縮圖片大小 瀏覽:253
javatomcat圖片 瀏覽:417
程序員生產智能創意 瀏覽:65
匯和銀行app怎麼登錄 瀏覽:381
騰訊伺服器如何上傳源碼 瀏覽:745
單片機的原理概述 瀏覽:508
火控pdf 瀏覽:267
如何復制雲伺服器centos環境 瀏覽:984
債權pdf 瀏覽:303
紅色番字的app怎麼下載 瀏覽:876
雲伺服器流程教課 瀏覽:702
中國農業銀行app怎麼沒有網 瀏覽:997
幾率表演算法 瀏覽:902
程序員理工科 瀏覽:708
企業郵箱登錄收件伺服器地址 瀏覽:560
計算機思維與演算法設計的重要性 瀏覽:664
linux刷新磁碟命令 瀏覽:78