145145# header(.h): add to ModuleLibIncs if need the specified library. for example, LibSTRoot
146146# library(.a): add to ModuleLibFiles if binary need the specifeid library. for example, LibSTfile
147147#
148+
149+ # the link options, always use static link
150+ SrsLinkOptions=" -ldl -lpthread" ;
151+
148152# st(state-threads) the basic network library for SRS.
149153LibSTRoot=" ${SRS_OBJS} /st" ; LibSTfile=" ${LibSTRoot} /libst.a"
150154if [[ $SRS_SHARED_ST == YES ]]; then LibSTfile=" -L${LibSTRoot} -lst" ; fi
@@ -154,7 +158,10 @@ if [[ $SRS_RTC == YES ]]; then
154158 LibSrtpRoot=" ${SRS_OBJS} /srtp2/include" ; LibSrtpFile=" ${SRS_OBJS} /srtp2/lib/libsrtp2.a"
155159 if [[ $SRS_USE_SYS_SRTP == YES ]]; then
156160 LibSrtpRoot=" " ; LibSrtpFile=" libsrtp2.a"
157- if [[ $SRS_SHARED_SRTP == YES ]]; then LibSrtpFile=" -lsrtp2" ; fi
161+ if [[ $SRS_SHARED_SRTP == YES ]]; then
162+ LibSrtpFile=" " ;
163+ SrsLinkOptions=" ${SrsLinkOptions} -lsrtp2" ;
164+ fi
158165 fi
159166fi
160167
@@ -175,7 +182,8 @@ if [[ $SRS_FFMPEG_FIT == YES ]]; then
175182 LibFfmpegRoot=" "
176183 LibFfmpegFile=" libavcodec.a libswresample.a libavutil.a libopus.a" ;
177184 if [[ $SRS_SHARED_FFMPEG == YES ]]; then
178- LibFfmpegFile=" -lavcodec -lswresample -lavutil -lopus"
185+ LibFfmpegFile=" "
186+ SrsLinkOptions=" ${SrsLinkOptions} -lavcodec -lswresample -lavutil -lopus" ;
179187 fi
180188 fi
181189fi
@@ -201,12 +209,13 @@ if [[ $SRS_SRT == YES ]]; then
201209 if [[ $SRS_SHARED_SRT == YES ]]; then LibSRTfile=" -L${SRS_OBJS} /srt/lib -lsrt" ; fi
202210 if [[ $SRS_USE_SYS_SRT == YES ]]; then
203211 LibSRTRoot=" " ; LibSRTfile=" libsrt.a"
204- if [[ $SRS_SHARED_SRT == YES ]]; then LibSRTfile=" -lsrt" ; fi
212+ if [[ $SRS_SHARED_SRT == YES ]]; then
213+ LibSRTfile=" " ;
214+ SrsLinkOptions=" ${SrsLinkOptions} -lsrt" ;
215+ fi
205216 fi
206217fi
207218
208- # the link options, always use static link
209- SrsLinkOptions=" -ldl -lpthread" ;
210219if [[ $SRS_SSL == YES && $SRS_USE_SYS_SSL == YES ]]; then
211220 SrsLinkOptions=" ${SrsLinkOptions} -lssl -lcrypto" ;
212221fi
@@ -247,6 +256,11 @@ if [[ $SRS_CYGWIN64 == YES && $SRS_FFMPEG_FIT == YES ]]; then
247256 SrsLinkOptions=" ${SrsLinkOptions} -lbcrypt" ;
248257fi
249258
259+ # User configed options.
260+ if [[ $SRS_EXTRA_LDFLAGS != ' ' ]]; then
261+ SrsLinkOptions=" ${SrsLinkOptions} $SRS_EXTRA_LDFLAGS " ;
262+ fi
263+
250264# ####################################################################################
251265# Modules, compile each module, then link to binary
252266#
@@ -415,7 +429,7 @@ if [[ $SRS_SRT == YES ]]; then
415429 ModuleLibIncs+=(${LibSRTRoot} )
416430 MODULE_OBJS=" ${MODULE_OBJS} ${SRT_OBJS[@]} "
417431fi
418- LINK_OPTIONS=" ${SrsLinkOptions}${SrsGprofLink}${SrsGperfLink} "
432+ LINK_OPTIONS=" ${LDFLAGS} ${ SrsLinkOptions}${SrsGprofLink}${SrsGperfLink}"
419433#
420434# srs: srs(simple rtmp server) over st(state-threads)
421435BUILD_KEY=" srs" APP_MAIN=" srs_main_server" APP_NAME=" srs" . $SRS_WORKDIR /auto/apps.sh
@@ -479,7 +493,7 @@ if [[ $SRS_UTEST == YES ]]; then
479493 fi
480494 MODULE_DEPENDS=(" CORE" " KERNEL" " PROTOCOL" " APP" )
481495 MODULE_OBJS=" ${CORE_OBJS[@]} ${KERNEL_OBJS[@]} ${PROTOCOL_OBJS[@]} ${APP_OBJS[@]} ${SRT_OBJS[@]} "
482- LINK_OPTIONS=" -lpthread ${SrsLinkOptions} " MODULE_DIR=" src/utest" APP_NAME=" srs_utest" . $SRS_WORKDIR /auto/utest.sh
496+ LINK_OPTIONS=" ${LDFLAGS} -lpthread ${SrsLinkOptions} " MODULE_DIR=" src/utest" APP_NAME=" srs_utest" . $SRS_WORKDIR /auto/utest.sh
483497fi
484498
485499# ####################################################################################
@@ -506,6 +520,7 @@ AR = ${SRS_TOOL_AR}
506520LINK = ${SRS_TOOL_LD}
507521RANDLIB = ${SRS_TOOL_RANDLIB}
508522CXXFLAGS = ${CXXFLAGS}
523+ LDFLAGS = ${LDFLAGS}
509524
510525# install prefix.
511526SRS_PREFIX=${SRS_PREFIX}
0 commit comments