Compile WSO2 WSF/PHP บน FreeBSD

หลายคนคงเคยใช้ WSO2 Web Services Framework for PHP ( http://wso2.org/projects/wsf/php ) ซึ่งเป็น Framework ตัวนึงที่น่าใช้ทีเดียว ในการลงบน linux นั้น ไม่ใช่เรื่องยาก ไม่ว่าจะลงโดย binary หรือการ compile เอง แต่เนื่องจาก kernel ของ Freebsd และ Linux มีการเรียก IO ใช้ต่างกัน ในรายละเอียด ทำให้ library บางอย่างไม่มี เกิด compilation error ได้

  1. # tar zxvf wso2-wsf-php-src-snapshot.tar.gz
  2. # cd wso2-wsf-php-src-2.0.0
  3. # ./configure
  4. # make
  5. uuid_gen_unix.c: In function `axutil_uuid_get_mac_addr':
  6. uuid_gen_unix.c:337: error: `SIOCGARP' undeclared (first use in this function)
  7. uuid_gen_unix.c:337: error: (Each undeclared identifier is reported only once
  8. uuid_gen_unix.c:337: error: for each function it appears in.)
  9. *** Error code 1

หาใน google มีคนเจอเหมือนกัน แต่ไม่ได้อยู่ดี เอาเป็นว่าลบทิ้งเลยละกันบรรทัดนั้น -_-''

  1.     memcpy(&(sa->sin_addr), *(he->h_addr_list), sizeof(struct in_addr));
  2. /* คอมเมนต์ซะ
  3.     if (ioctl(s, SIOCGARP, &ar) < 0)
  4.     {
  5.         close(s);
  6.         return NULL;  
  7.     }
  8. */
  9.     close(s);
  10.     if (!(ar.arp_flags & ATF_COM))
  11.         return NULL;
  1. # make

อีกอัน เหมือน ftime() ไม่มี ต้องลง libcompat

  1. # cd /usr/ports/misc/compat5x
  2. # make install clean

จากนั้น บังคับโหลดไลบรารี่ เพิ่ม LDFLAGS ไปซะ

  1. # LDFLAGS="-lcompat" ./configure
  2. # make
  3. # make install

มีหา library ไม่ ไปแก้นิดนึง จาก -I/usr/include เป็น -I /usr/local/include ก้อผ่าน แต่ใช้ได้มั้ยเดี๋ยว รายงานตอนตอไปว่ามีปัญหาหรือไม่