I compile my component with the following command:
Code: Select all
c++ -Wall -Os -o MyComponent.so `pkg-config --cflags --libs gtk+-2.0` -LXlib -include mozilla-config.h -DXPCOM_GLUE -I~/gecko-sdk/include -L~/gecko-sdk/lib -L~/gecko-sdk/bin -Wl,-rpath-link,~/gecko-sdk/bin -lxpcomglue_s -lxpcom -lnspr4 -fno-rtti -fno-exceptions -shared MyComponent.cpp ../../components/MyComponentModule.cpp
I tried to run
Code: Select all
~/firefox-3.0/run-mozilla.sh `which ldd` -r MyComponent.so
and got
Code: Select all
...
undefined symbol: _Z20NS_NewGenericModule2PK12nsModuleInfoPP9nsIModule (MyComponent.so)
When I compile with -DDEBUG I get more:
Code: Select all
...
undefined symbol: NSGlue_Warning (MyComponent.so)
undefined symbol: NSGlue_Assertion (MyComponent.so)
undefined symbol: _ZN13nsTraceRefcnt10LogReleaseEPvjPKc (MyComponent.so)
undefined symbol: _ZN13nsTraceRefcnt9LogAddRefEPvjPKcj (MyComponent.so)
undefined symbol: _Z20NS_NewGenericModule2PK12nsModuleInfoPP9nsIModule (MyComponent.so)
As I understand component compiled with Gecko SDK 1.8 with frozen linkage should work in 1.8+. In Windows similar component works both in FF2 and FF3 but in Linux I can't load my component into FF3. I don't want to use Geck SDK 1.9 because (again, as I understand) it will break compatibility of my component with FF2.
Can anybody help me with this? Thank you.