Language

The Free and Open Productivity Suite
Released: Apache OpenOffice 4.1.15

การสร้างโปรแกรม (build) สำหรับ Windows

ในที่นี้จะพูดถึงการ build OO.o source line 1.1.x (64x) บนแพลตฟอร์ม Windows เท่านั้น

วิธีการ build สำหรับแพลตฟอร์มอื่นๆ (Linux, Mac OS X, Solaris, etc.) ให้ดูที่หน้า document

สิ่งที่ต้องมีก่อนการ build

ฮาร์ดแวร์:

  • หน่วยประมวลผล ระดับเพนเทียม หรือเทียบเท่า ขึ้นไป
  • เนื้อที่ว่างในดิสก์ ต้องมี อย่างน้อย 3 GB
  • หน่วยความจำ แนะนำให้มี อย่างน้อย 128 MB

ซอฟต์แวร์:

ซอฟต์แวร์: สภาพแวดล้อมของระบบ

  • Service Pack
    • Windows NT 4 : ต้องลง Service Pack 3 หรือสูงกว่า
    • Windows 2000 : ต้องลง Service Pack 2 หรือสูงกว่า
    ดาวน์โหลด Service Pack ได้ที่ http://www.microsoft.com/windows/lifecycle/servicepacks.mspx
  • cygwin -- ดาวน์โหลดได้ที่ http://www.cygwin.org
    (ไฟล์ที่ดาวน์โหลดมา จะเป็นตัวติดตั้งเท่านั้น ตัวติดดั้งจะไปดาวน์โหลดแต่ละแพคเกจที่ต้องการอีกที)
    • ตอนติดตั้งให้เลือกลงแบบ default และให้แน่ใจว่า ได้เลือกแพคเกจเหล่านี้เพิ่มแล้ว
      • autoconf
      • automake
      • binutils
      • bison
      • bzip2
      • cmake
      • cvs
      • flex
      • gawk
      • gcc
      • gzip
      • make
      • mingw
      • openssh
      • openssl
      • patch
      • perl
      • tar
      • tcsh
      • unzip
      • zip
    • ขณะติดตั้ง ให้แน่ใจว่า ได้เลือกค่า "Default Text File Type" เป็น "Unix" (ในตอนแรกจะเป็นค่านี้อยู่แล้ว)
    • อ่านข้อมูลเพิ่มเติมเกี่ยวกับ Cygwin ได้ที่นี่ [ภาษาอังกฤษ]

ซอฟต์แวร์: คอมไพเลอร์

  • Microsoft Visual C++ 6.0 Service Pack 3 ขึ้นไป -- ดาวน์โหลด Service Pack ได้ที่ http://www.microsoft.com
  • Microsoft Platfrom SDK -- ดาวน์โหลดได้ที่ http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
    ข้อควรระวัง: ในตอนที่ดาวน์โหลด Platform SDK ให้เลือกดาวน์โหลด Build environment (Intel 64-bit) ด้วย, ถ้ามี
  • Microsoft Macro Assembler -- ดาวน์โหลดได้ที่ http://www2.dgsys.com/~raymoon/faq/masm.html#9 หรือจากที่อื่นๆ
    (บางทีอาจจะถูกติดตั้งไว้แล้ว ในไดเรกทอรีเดียวกับ VC++, ให้ลองหาไฟล์ชื่อ ML.EXE และ ML.ERR, ถ้าไม่พบ ให้ติดตั้งเ้พิ่ม)
  • Java 2 SE SDK รุ่น 1.4 ขึ้นไป -- ดาวน์โหลดได้ที่ http://java.sun.com/
    ข้อควรระวัง: ขณะนี้ ใช้ Java 2 SE 1.4.1 ได้ แต่ยังใช้ Java 2 SE 1.4.2 ไม่ได้

ซอฟต์แวร์: ซอร์สโค้ด และ ไลบรารี

  • ซอร์สโค้ดของ OOo (แนะนำให้ใช้ตัวล่าสุด) -- ดาวน์โหลดได้ที่ http://www.openoffice.org/dev_docs/source/download.html#source (แนะนำให้ดาวน์โหลดตัวที่เป็น .tar.bz2 เพราะตัวเล็กกว่า และไม่พบปัญหาหลังการแตกไฟล์)
  • solver ของ Windows -- ดาวน์โหลดได้ที่ http://www.openoffice.org/dev_docs/source/download.html#source
  • ไลบรารี General Polygon Clipper -- ดาวน์โหลดได้ที่ http://www.cs.man.ac.uk/aig/staff/alan/software/
    หลังจากแตกไฟล์ออกมาแล้ว ให้นำไฟล์ gpc.h และ gpc.c ไปใส่ไว้ในไดเรกทอรี $SRC_ROOT/external/gpc
  • ไลบรารี Microsoft Layer for Unicode on Windows 95/98/ME -- ดาวน์โหลดได้ที่ http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe
    หลังจากแตกไฟล์ออกมาแล้ว ให้นำไฟล์ unicows.dll ไปใส่ไว้ในไดเรกทอรี $SRC_ROOT/external/unicows
  • ไลบรารี DbgHelp.dll -- ดาวน์โหลดได้ที่ http://www.microsoft.com/downloads/release.asp?releaseid=30682
    หลังจากแตกไฟล์ออกมาแล้ว ให้นำไฟล์ DbgHelp.dll ไปใส่ไว้ในไดเรกทอรี $SRC_ROOT/external/dbghelp
  • * ในกรณีที่สร้าง OOo ด้วย .NET compiler, ต้องใช้ไฟล์ msvcp70.dll และ msvcr70.dll -- ทั้งสองไฟล์ จะมีอยู่ในไดเรกทอรี "\Program Files\Microsoft Visual Studio .NET\Visual C++ .NET Professional - English\"
    ให้ทำสำเนาทั้งสองไฟล์มาไว้ที่ ไดเรกทอรี $SRC_ROOT/external/msvcp70

การตั้งชื่อไดเรกทอรี ที่ใช้เก็บซอร์สโค้ด OOo

  • ห้ามเก็บไว้ใต้ไดเรกทอรีชื่อ cvs
    เช่น /cvs/ooo_1.1_src
    เพราะจะทำให้มีปัญหาตอนใช้ CVS (เป็นข้อผิดพลาดของตัว OOo เอง) ให้เลี่ยงไปใช้ชื่ออื่นแทน
    เช่น /ooocvs/ooo_1.1_src
  • อย่าใช้ชื่อไดเรกทอรีที่มีชื่อ stl เป็นส่วนหนึ่งของชื่อ
    เนื่องจากจะทำการ build ผิดพลาด (เป็นปัญหาของ script ในการ build เอง)

ปัญหาเรื่องไดเรกทอรี tmp

ปกติในขั้นตอนการ build ตัว build จะใส่ผลลัพธ์ชั่วคราวจากการ zip ไว้ที่ไดเรกทอรี $ROOT/tmp แต่ด้วยข้อผิดพลาดบางอย่าง ในบางครั้ง root จะถูกชี้ไปที่ root ของ drive ที่เก็บ source code (เช่น e:\) แทนที่จะเป็นไดเรกทอรี root ของ cygwin (เช่น d:\cygwin)

วิธีแก้ปัญหาเฉพาะหน้าคือ

  • ลบไดเรกทอรี tmp ที่ไดเรกทอรี root ของ cygwin ทิ้ง
  • สร้างไดเรกทอรี tmp ที่ root ของ drive
  • ทำ symbolic link ชื่อ tmp ที่ไดเรกทอรี root ของ cygwin ให้ชี้ไปที่ tmp ที่ root ของ drive เช่น
    cd /
    ln -s /cygdrive/e/tmp tmp

การสร้างโปรแกรม (build)

ประกอบด้วย 3 ขั้นตอนหลัก

ตรวจสอบส่วนประกอบที่จำเป็น

โดยใช้โปรแกรม configure ซึ่งจะตรวจสอบว่า เครื่องของเรามีส่วนประกอบซอฟต์แวร์ต่างๆ สำหรับการ build ครบถ้วนหรือไม่

  • ถ้า configure หาส่วนประกอบใดไม่พบ จะแจ้งชื่อของส่วนนั้น และหยุดการทำงาน
    ให้ติดตั้งส่วนประกอบนั้น (ในที่ๆ configure จะหาเจอ) ให้เรียบร้อยเสียก่อน
  • พารามิเตอร์อื่นๆ ของ configure สามารถดูได้ โดยสั่ง "configure --help"
  • ถ้า configure ตรวจพบทุกอย่างที่จำเป็น จะทำการสร้างไฟล์ environment setting มาให้เรา (ชื่อจะแตกต่างกันไป ตามสภาพแวดล้อม เช่น winenv.set, winmingw.set)

การรัน configure ให้ไปที่ไดเรกทอรี config_office แล้วสั่ง

./configure --with-cl-home=(ที่อยู่ของ C compiler) --with-asm-home=(ที่อยู่ของ Assembler) --with-jdk-home=(ที่อยู่ของ Java SDK) --with-unzip-home=(ที่อยู่ของโปรแกรม UnZip) --with-2003-psdk --with-use-shell=tcsh
ตัวอย่าง
./configure --with-cl-home=/cygdrive/d/PROGRA~1/MICROS~3/VC98 --with-asm-home=/cygdrive/d/ml --with-jdk-home=/cygdrive/d/j2sdk1.4.1_02 --with-unzip-home=/cygdrive/d/cygwin/bin --with-2003-psdk --with-use-shell=tcsh

สร้างเครื่องมือสำหรับการสร้่างโปรแกรม

ก่อนอื่นให้ืทำการตั้งค่าสภาพแวดล้อมให้อำนวยกับการ build โดยสั่ง

tcsh
เพื่อเข้าใช้ tcsh (shell แบบหนึ่ง) แล้วสั่ง
source winenv.set
(winenv.set คือไฟล์ที่สร้างโดยโปรแกรม configure)
จากนั้น ที่ root ของ source สั่ง
bootstrap
เพื่อสร้างโปรแกรม dmake

ลงมือสร้างโปรแกรม

หลังจากสร้างโปรแกรม dmake เรียบร้อยแล้ว, ที่ root ของ source ให้็สั่ง

dmake
เพื่อลงมือสร้างโปรแกรมทั้งหมด.
* หากต้องการ เริ่มสร้างโปรแกรมใหม่ทั้งหมด (ลบส่วนประกอบเดิมต่างๆ ที่เคยสร้างเอาไว้ทิ้ง แล้วคอมไพล์ใหม่ทุกอย่างตั้งแต่เริ่มแรก) ให้ใช้คำสั่ง dmake clean ก่อน แล้วจึงตามด้วย dmake
  • การ build จะกินเวลาอย่างน้อยประมาณ 12 ชม. แล้วแต่ความเร็วของเครื่อง (ในกรณีที่ build ทั้งหมดทุกโมดูลจากซอร์สโค้ดโดยตรง ไม่ได้ใช้ solver)
  • ให้แน่ใจว่ามีเนื้อที่ว่าง อย่างน้อย 3 GB ก่อนการ build (ในกรณีที่ build ทั้งหมดทุกโมดูล)
  • บางครั้ง dmake จะหยุดการทำงานแล้วแจ้งว่า error นู่น error นี่ ให้ลองสั่ง dmake ซ้ำดู บางทีจะสามารถทำงานต่อได้ โดยไม่มี error (เป็นปัญหาของตัว dmake เอง)
  • ผลลัพธ์ต่างๆ ที่ได้จากการ build จะอยู่ในไดเรกทอรี
    $SRC_ROOT/solver/NNN/ooocccpv.pro
    โดย
    NNN คือหมายเลข source tree
    ooo = ชื่อ os เช่น wnt (Windows NT)
    ccc = ชื่อ compiler ที่ใช้ เช่น msc (Microsoft Visual C++)
    p = ชื่อ platform เช่น i (Intel)
    v = เลขรุ่นของ compiler ที่ใช้
    เช่น
    solver/645/wntmsci9.pro ถ้าใช้ Visual C++
    solver/645/wntgcci3.pro ถ้าใช้ mingw (gcc)

    หมายเหตุ: .pro หมายถึง product
  • ตัวติดตั้ง (setup.exe -- installation set) จะอยู่ในไดเรกทอรี
    $SRC_ROOT/instsetoo/ooocccpv.pro/LL/normal

    โดย LL เป็นตัวเลขของ locale เช่น 01 สำหรับภาษาอังกฤษ, 66 สำหรับภาษาไทย

การปรับปรุงซอร์สโค้ดจาก CVS

ตัวอย่างเช่น

cvs -d :pserver:anoncvs@anoncvs.services.openoffice.org:/cvs update -r OpenOffice644 OpenOffice

พบปัญหาในการ build

  • ตรวจสอบ configuration และไฟล์ที่ต้องใช้ต่างๆ ว่าครบถ้วน และถูกต้อง ตามสภาพแวดล้อมของเครื่องปัจจุบันหรือไม่ (เช่นชื่อไดเรกทอรี รุ่นของ Java 2 SDK ฯลฯ) ลองทำการแก้ไข และ build อีกครั้งหนึ่ง
  • อ่านเอกสารที่ OpenOffice.org Developer Website
  • สอบถามไปยัง mailing list ของ OOo พร้อมระบุปัญหาที่พบ สภาพแวดล้อมที่พบปัญหา (รุ่นของระบบปฏิบัติการ รุ่นของคอมไพเลอร์ configuration ที่ใช้ในการ build ฯลฯ) และรุ่นของซอร์สโค้ดที่ใช้ในการ build (เช่น 1.1rc3 หรือวันที่ check out จาก cvs) ให้ชัดเจน และกระชับ

 

 

 
ชุมชนภาษาไทย
แนะนำ
ผลิตภัณฑ์
รายละเอียด
ดาวน์โหลด
ซีดีรอม
ตัวตรวจตัวสะกด
โครงการ
ความเป็นมา
ถาม/ตอบ
ขอความช่วยเหลือ
เมลลิงลิสต์
เอกสาร
ร่วมพัฒนา
ทำอย่างไร?
แจ้งบั๊ก
ติดต่อ
เมลลิงลิสต์
ที่อยู่
อื่นๆ
เครดิต
ข้อกฏหมาย

Apache Software Foundation

Copyright & License | Privacy | Contact Us | Donate | Thanks

Apache, OpenOffice, OpenOffice.org and the seagull logo are registered trademarks of The Apache Software Foundation. The Apache feather logo is a trademark of The Apache Software Foundation. Other names appearing on the site may be trademarks of their respective owners.