Hi !
My plugin doesn't load on linux.
I've tried so many things, but it doesn't work, and it works fine on Windows.
So perhaps someone can help me.
SRCDS launched with -allowdebug -debug and GNU gdb :
Code:
...
CResponseSystem: scripts/talker/response_rules.txt (15 rules, 76 criteria, and 16 responses)
Plugins: found file "plugin.vdf"
Unable to load plugin "addons/plugin/plugin"
maxplayers set to 20
Heap: 64.00 Mb
...
Nothing ...
Dependencies :
Code:
ldd -v plugin.so
linux-gate.so.1 => (0x00c4e000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x00e03000)
/win_c/srcds_l_bin/bin/libtier0.so => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00110000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00e16000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x001fb000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00586000)
/lib/ld-linux.so.2 (0x00f06000)
Version information:
./plugin.so:
libdl.so.2 (GLIBC_2.1) => /lib/i386-linux-gnu/libdl.so.2
libdl.so.2 (GLIBC_2.0) => /lib/i386-linux-gnu/libdl.so.2
libm.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libm.so.6
libgcc_s.so.1 (GCC_3.0) => /lib/i386-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (GLIBC_2.0) => /lib/i386-linux-gnu/libgcc_s.so.1
libc.so.6 (GLIBC_2.2) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
libstdc++.so.6 (CXXABI_1.3) => /usr/lib/i386-linux-gnu/libstdc++.so.6
libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/i386-linux-gnu/libstdc++.so.6
/lib/i386-linux-gnu/libdl.so.2:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/i386-linux-gnu/libc.so.6
/usr/lib/i386-linux-gnu/libstdc++.so.6:
libm.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libm.so.6
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
libgcc_s.so.1 (GCC_4.2.0) => /lib/i386-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (GLIBC_2.0) => /lib/i386-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.3) => /lib/i386-linux-gnu/libgcc_s.so.1
libgcc_s.so.1 (GCC_3.0) => /lib/i386-linux-gnu/libgcc_s.so.1
libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.3.2) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2) => /lib/i386-linux-gnu/libc.so.6
/lib/i386-linux-gnu/libm.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_PRIVATE) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
/lib/i386-linux-gnu/libgcc_s.so.1:
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.2.4) => /lib/i386-linux-gnu/libc.so.6
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6
/lib/i386-linux-gnu/libc.so.6:
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
Makefile :
Code:
BASE_DIR = ../..
CXX = g++-4.1
BINARY_NAME = plugin.so
BINARY_DIR = .
SDK_SRC_DIR = $(BASE_DIR)
SDK_PUBLIC_DIR = $(SDK_SRC_DIR)/public
SDK_TIER0_DIR = $(SDK_SRC_DIR)/public/tier0
SDK_TIER1_DIR = $(SDK_SRC_DIR)/tier1
SDK_GAME_DIR = $(SDK_SRC_DIR)/game
SDK_GAMESHARED_DIR = $(SDK_GAME_DIR)/shared
SDK_GAMESERVER_DIR = $(SDK_GAME_DIR)/server
RELEASE_DIR = Release/linux
DEBUG_DIR = Debug/linux
SRCDS_DIR = /win_c/srcds_l_bin
SRCDS_BIN_DIR = $(SRCDS_DIR)/bin
SRCDS_A_DIR = $(SDK_SRC_DIR)/lib/linux
ARCH_CFLAGS = -mtune=i686 -march=pentium -mmmx
USER_CFLAGS = -DTIXML_USE_TICPP
BASE_CFLAGS = -msse \
-fpermissive \
-D_LINUX \
-DNDEBUG \
-Dstricmp=strcasecmp \
-D_stricmp=strcasecmp \
-D_strnicmp=strncasecmp \
-Dstrnicmp=strncasecmp \
-D_snprintf=snprintf \
-D_vsnprintf=vsnprintf \
-D_alloca=alloca \
-Dstrcmpi=strcasecmp \
-fPIC \
-Wno-deprecated \
-msse
OPT_FLAGS = -O3 -funroll-loops -s -pipe
DEBUG_FLAGS = -g -ggdb3 -O0 -D_DEBUG
SRC= $(wildcard *.cpp) $(wildcard */*.cpp) $(wildcard */*/*.cpp)
LINK_SO = $(SRCDS_BIN_DIR)/libtier0.so
LINK_A = $(SRCDS_A_DIR)/tier1_i486.a $(SRCDS_A_DIR)/tier2_i486.a
LINK = -lm -ldl $(LINK_A) $(LINK_SO)
INCLUDE = -I. \
-I$(SDK_PUBLIC_DIR) \
-I$(SDK_PUBLIC_DIR)/engine \
-I$(SDK_PUBLIC_DIR)/tier0 \
-I$(SDK_PUBLIC_DIR)/tier1 \
-I$(SDK_PUBLIC_DIR)/vstdlib \
-I$(SDK_PUBLIC_DIR)/game/server \
-I$(SDK_SRC_DIR)/tier1 \
-I$(SDK_SRC_DIR)/game \
-I$(SDK_SRC_DIR)/game/server \
-I$(SDK_SRC_DIR)/game/shared
ifeq "$(DEBUG)" "false"
BIN_DIR = $(RELEASE_DIR)
CFLAGS = $(OPT_FLAGS)
else
BIN_DIR = $(DEBUG_DIR)
CFLAGS = $(DEBUG_FLAGS)
endif
CFLAGS += $(USER_CFLAGS) $(BASE_CFLAGS) $(ARCH_CFLAGS)
OBJECTS := $(SRC:%.cpp=$(BIN_DIR)/%.o)
compile_object = \
@mkdir -p $(2); \
echo "$(1) => $(3)"; \
$(CXX) $(INCLUDE) $(CFLAGS) -o $(3) -c $(1);
$(BIN_DIR)/%.o: %.cpp %.h
$(call compile_object, $<, $(@D), $@)
$(BIN_DIR)/%.o: %.cpp
$(call compile_object, $<, $(@D), $@)
all: $(OBJECTS)
@$(CXX) $(INCLUDE) $(CFLAGS) $(OBJECTS) $(LINK) -shared -o $(BINARY_DIR)/$(BINARY_NAME)
release:
@$(MAKE) all DEBUG=false
clean:
@rm -rf $(RELEASE_DIR)
@rm -rf $(DEBUG_DIR)
@rm -rf $(BINARY_DIR)/$(BINARY_NAME)
.PHONY: clean
Help will be much appreciated ... thanks.
Edit : It's like the Load function is not executed at all.