Recently, many netizens have reported problems with the installation of robbe on 64bit systems.
1. I don’t know how to compile robbe.
2. I compiled it, but the following error occurred:
lazy symbol binding failed: Symbol not found: _friso_new_from_ifile
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20090626/robbe.so
Expected in: flat namespace
A unified solution is given here:
Robbe provides one internally robbe.so file, but it is compiled on a 32bit system, and it will definitely not work on a 64bit system.
1. Compile and install friso:
(1). Change the Makefile of friso, FFLAGS = -O2 -Wall change For FFLAGS = -O2 -Wall -fPIC, that is, add the -fPIC option.
(2). make
(3). sudo make install
friso, the installation is successful,
2. Compile and install robbe:
cd to robbe’s source code directory
(1). phpize (if there is no phpize, first sudo apt-get install php5-dev to install the tool)
(2). ./configure
(3). Change the Makefile
Here is the key point. Many netizens have failed to find the function of friso because they did not change this file. Introduce the friso shared file in the following goals, and add the -lfriso option before the -o option. Change as follows:
//Line 164 of Makefile
robbe.lo: /c/php_ext/robbe/robbe.c
$(LIBTOOL) --mode=compile $(CC) -I. -I/c/php_ext/robbe $( COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) -c /c/php_ext/robbe/robbe.c -lfriso -o robbe.lo
//Line 168 of Makefile
./robbe.la: $(shared_objects_robbe) $( ROBBE_SHARED_DEPENDENCIES)
$(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -lfriso -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_robbe) $(ROBBE_SHARED_LIBADD)
//Add -lfriso
(4). make
(5). sudo make install
(6). Add robbe.so in php.ini, remember to configure robbe!
(7). Restart the php hosting environment
happy robbe.