AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Coding MM:S Plugins & SM Extensions (https://forums.alliedmods.net/forumdisplay.php?f=75)
-   -   Linux : Unable to load plugin (https://forums.alliedmods.net/showthread.php?t=166251)

teol 09-01-2011 10:57

Linux : Unable to load plugin
 
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.


All times are GMT -4. The time now is 04:14.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.