当前位置:  技术问答>linux和unix

Solaris 生成共享库的问题

    来源: 互联网  发布时间:2015-12-20

    本文导语:  从开源项目中抽取makefile中的部分,即如下makefile文件执行后可以 生成一个可执行文件myplayer。现在想将此可执行文件以动态链接库的 形式提供,于是将myplayr.cpp中的main函数改成startmain,用来接收 相应的参数。同时修...

从开源项目中抽取makefile中的部分,即如下makefile文件执行后可以
生成一个可执行文件myplayer。现在想将此可执行文件以动态链接库的
形式提供,于是将myplayr.cpp中的main函数改成startmain,用来接收
相应的参数。同时修改makefile生成动态链接库文件(.so)。但试了很
多次都不行。我的是在Solaris 9上编译。敬请高人指点,在生成动态库
时的makefile相关项应该怎么写才好?

由于长度限制分两次发。

#LIBPATH = /usr/local/lib
LIBPATH = .

#deine player lib version infomation
VERSION_MAJOR = 1
VERSION_MINOR = 0

srcdir = .
top_srcdir = ../..

pkgdatadir = $(datadir)/mpeg4ip
pkglibdir = $(libdir)/mpeg4ip
pkgincludedir = $(includedir)/mpeg4ip
top_builddir = ../..

datadir = ${prefix}/share
#libdir = ${exec_prefix}/lib
includedir = ${prefix}/include

prefix = /usr/local

include_HEADERS = 
codec_plugin.h 
rtp_plugin.h 
text_plugin.h 
    mpeg4ip.h   
    codec_plugin_private.h 
     
    player_session.h 
    player_media.h 
    player_util.h 
    our_msg_queue.h 
    ip_port.h 
    media_utils.h 
    playlist.h 
    our_config_file.h 
     
     
    video.h 
    video_sdl.h 
    mpeg4ip_getopt.h 
    mpeg2t/mpeg2_transport.h 
    mpeg2ps/mpeg2_ps.h

@HAVE_MAC_OSX_FALSE@SDL_AUDIO_FLAGS = 
@HAVE_MAC_OSX_TRUE@SDL_AUDIO_FLAGS = -framework CoreAudio -framework AudioToolbox 
@HAVE_MAC_OSX_FALSE@SDL_AUDIO_LIB = $(top_builddir)/lib/SDLAudio/src/libmpeg4ipSDL.la 
@HAVE_MAC_OSX_TRUE@SDL_AUDIO_LIB = $(top_builddir)/player/lib/audio/portaudio/libportaudio.la 
@HAVE_MAC_OSX_FALSE@SDL_AUDIO_INC = -I$(top_srcdir)/lib/SDLAudio/include
@HAVE_MAC_OSX_TRUE@SDL_AUDIO_INC = -I$(top_srcdir)/player/lib/audio/portaudio
@HAVE_MAC_OSX_FALSE@ADD_CFLAGS = 
@HAVE_MAC_OSX_TRUE@ADD_CFLAGS = -Ddarwin -D_THREAD_SAFE -DNEED_SDL_VIDEO_IN_MAIN_THREAD


SDL_AUDIO_FLAGS = 
#SDL_AUDIO_FLAGS = -framework CoreAudio -framework AudioToolbox 
SDL_AUDIO_LIB = $(top_builddir)/lib/SDLAudio/src/libmpeg4ipSDL.la 
#SDL_AUDIO_LIB = $(top_builddir)/player/lib/audio/portaudio/libportaudio.la 
SDL_AUDIO_INC = -I$(top_srcdir)/lib/SDLAudio/include
#SDL_AUDIO_INC = -I$(top_srcdir)/player/lib/audio/portaudio
ADD_CFLAGS = 
#ADD_CFLAGS = -Ddarwin -D_THREAD_SAFE -DNEED_SDL_VIDEO_IN_MAIN_THREAD

# lib target.
#LIB_TARGET = libmyplayer.so.$(VERSION_MAJOR).$(VERSION_MINOR)
#LIB_TARGET = libmyplayer.so
#PROG_TARGET = myplayer


myplayer_LDFLAGS = $(SDL_AUDIO_FLAGS)
myplayer_LDADD = 
-lm $(SDL_AUDIO_LIB) 
libmp4player.la 
libmp4syncbase.la 
libmp4syncsdl.la 
libmp4sdlvideo.la 
libmp4syncbase.la 
libmp4playerutils.la 
$(top_builddir)/lib/audio/libaudio.la 
$(top_builddir)/lib/ismacryp/libismacryp.la 
-L/usr/local/lib -R/usr/local/lib -lSDL -lpthread -lposix4


#COMMOBJS = myplayer.o
MAINOBJS = myplayer.o

#HEADERS = myplayer.h
HEADERS = $(include_HEADERS)
CC = gcc -g -fPIC
DEFS = -DHAVE_CONFIG_H
CPPFLAGS = 
CXXFLAGS = -g -O2 -DMPEG4IP -I/usr/local/include/SDL -D_REENTRANT
AM_CFLAGS = -D_REENTRANT -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Wno-char-subscripts -Wno-unknown-pragmas -Wformat=2 -Wdeclaration-after-statement -Wpointer-arith -Wsign-compare -Wswitch-enum -Wnested-externs -Wswitch-enum -DPLAYER_PLUGIN_DIR="${exec_prefix}/lib/mp4player_plugin" $(ADD_CFLAGS)
AM_CXXFLAGS = -D_REENTRANT -DNOCONTROLS -fexceptions -Wall -Wno-char-subscripts -Woverloaded-virtual -Wno-unknown-pragmas -Wno-deprecated -Wformat=2 -Wpointer-arith -Wsign-compare -DPLAYER_PLUGIN_DIR="${exec_prefix}/lib/mp4player_plugin"  $(ADD_CFLAGS)
CFLAGS = -g -O2 -DMPEG4IP -I/usr/local/include/SDL -D_REENTRANT
CPP = gcc -E
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
SHELL = /bin/bash
LIBS = -ldl -lnsl -lsocket
LIBTOOL = $(SHELL) $(top_builddir)/libtool

PROGS = myplayer
#PROGS = myplayer.so

INCLUDES = 
-I$(top_srcdir)/include 
-I$(top_srcdir)/player/lib 
-I$(top_srcdir)/player/lib/audio 
-I$(top_srcdir)/player/lib/libhttp 
-I$(top_srcdir)/player/lib/rtsp 
$(SDL_AUDIO_INC) 
-I/usr/local/include 
-I/usr/local/include/SDL 
-I$(top_srcdir)/lib 
-I$(top_srcdir)/lib/avi 
-I$(top_srcdir)/lib/ismacryp 
-I$(top_srcdir)/lib/mp4av 
-I$(top_srcdir)/lib/mp4 
-I$(top_srcdir)/lib/mp4v2 
-I$(top_srcdir)/lib/mpeg2ps 
-I$(top_srcdir)/lib/msg_queue 
-I$(top_srcdir)/lib/rtp 
-I$(top_srcdir)/lib/sdp 
-I$(top_srcdir)/lib/utils 
-I$(top_srcdir)/lib/audio 
   -I/usr/openwin/include  
am__DEPENDENCIES_1 = $(top_builddir)/lib/SDLAudio/src/libmpeg4ipSDL.la
am_myplayer_OBJECTS = myplayer.o
myplayer_OBJECTS = $(am_myplayer_OBJECTS)
myplayer_DEPENDENCIES = $(am__DEPENDENCIES_1) libmp4player.la 
libmp4syncbase.la libmp4syncsdl.la libmp4sdlvideo.la 
libmp4syncbase.la libmp4playerutils.la 
$(top_builddir)/lib/audio/libaudio.la 
$(top_builddir)/lib/ismacryp/libismacryp.la
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)

COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) 
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) 
$(AM_LDFLAGS) $(LDFLAGS) -o $@
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) 
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) 
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) 
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) 
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@

|
一般都要加上fPIC的。

你可以用file命令看一下这个libmpeg4ipSDL.la文件,看看系统返回什么。

    
 
 

您可能感兴趣的文章:

  • 虚拟机下solaris10与window共享问题
  • 请问在solaris下用samba设置文件共享问题
  • 在solaris下设定nfs共享,在winxp下访问。
  • 知识共享:从Linux到Solaris:概述和命令差异,学吧~,兄弟们!
  • solaris 下调用Posix共享内存函数 续!fierygnu(va_list) 来领分
  • Solaris 连接Windows共享打印机的问题???
  • solaris下用什么命令看共享库.so中的函数?
  • solaris for x86 怎样与win 2k共享???
  • 如何修改Solaris 9 的共享内存最大值。
  • 大家好,公司在sun solaris上开发系统,而我以前没有接触过类似的东西有什么好东西能不能共享一下
  • 谁有Network Administration for the Solaris 10 Operating System (SA-300-S10)电子版?感谢共享
  • UNIX/solaris下的共享库问题,大虾帮忙!
  • 痛苦!该修改的都改了,为啥共享光驱网络安装SOLARIS,执行add_install_client却报Error: unknown client??
  • solaris 下调用Posix共享内存函数shm_open,shm_unlink问题。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java开发知识 iis7站长之家
  • Solaris菜鸟!!!请问Solaris SPARC和Solaris x86这两个版本之间有什么具体的差异吗?
  • 请问Solaris现在最高的版本是多少?Solaris8.0价格如何?Solaris8.0和Red Hat Enterprise Linux AS 3.0有何区别?
  • 请教solaris高手一个solaris安装问题
  • solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
  • 听说在solaris上运行java飞快,solaris有多大,如果不大,我想下载,哪有下载?
  • 请问:SOLARIS(for intel)如何装d-link网卡。哪儿下Solaris电子文档。
  • Solaris for X86 和Solaris for Sparc主要区别在哪?
  • 请问Solaris的优势?Solaris下开发相关及系统管理相关资料是否有提供?谢谢
  • telnet 进去的时候我看写着SUN OS5.8,这个是不是Solaris?我找不到Solaris5.8的软件?
  • 没有光碟,怎样从solaris8升级到solaris9?
  • solaris 10能不能远程桌面连接Solaris 10(或 Linux) ,不要安装其他软件
  • 请问高手,在Solaris 8 gcc3.1编译的 *.o 和库文件 *.a ,可以提供在Solaris 7,9下使用吗?
  • 我装了Solaris后,98和2000都找不到了,启动时直接进入Solaris,该怎么办,请高手指点!
  • solaris开发一窍不通,如何开发Solaris下的c程序?
  • 想用Virtual PC虚拟UNIX,求Solaris 10 ,Solaris 10 for x86版或已经设置好的虚拟文件?
  • 怎么修改IP(SOLARIS),怎么在WIN上用EXTRX!X连上SOLARIS
  • solaris 10 下怎么安装jdk-6u5-solaris-i586.sh? ftp上传大文件中断怎么解决?
  • 专门为难solaris高手,之solaris10的修改最大TCP连接数问题
  • solaris root 的shell搞错了,提示 no shell root 进不了!(solaris 8 for x86)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3