• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 01:16
CEST 07:16
KST 14:16
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Serral wins Maestros of the Game 233ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7
Community News
Weekly Cups (June 29-July 5): Solar Doubles0MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon415.0.16 Hotfix (June 30) - Balance + Bug Fixes40Weekly Cups (June 22-28): Zergs thrive in new patch5[TLMC] Summer 2026 Ladder Map Rotation0
StarCraft 2
General
Serral wins Maestros of the Game 2 Is the larve respawn broken? 5.0.16 patch for SC2 goes live (8 worker start) 5.0.16 Hotfix (June 30) - Balance + Bug Fixes Weekly Cups (June 29-July 5): Solar Doubles
Tourneys
Sea Duckling Open (Global, Bronze-Diamond) Crank Gathers Season 4: BW vs SC2 Team League GSL CK #5 Race War HomeStory Cup 29 RSL Revival: Season 6 - Qualifiers and Main Event
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
Mutation # 533 Die Together The PondCast: SC2 News & Results Mutation # 532 Nuclear Family Mutation # 531 Experimental Artillery
Brood War
General
ASL 22 Proposed Map Pool Snow On New ASL S22 Map, Zerg Nerf BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ Starcraft vs Retro Category on Twitch
Tourneys
IPSL Spring 2026 Top 4! CSLAN 4 is Coming! Escore Tournament StarCraft Season 2 The Casual Games of the Week Thread
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies
Other Games
General Games
Dawn of War IV Stormgate/Frost Giant Megathread Nintendo Switch Thread Summer Games Done Quick 2026! ZeroSpace at Steam NextFest - Last free demo
Dota 2
Looking for a Dota Mentor Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug
TL Mafia
NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread TL Mafia Power Rank Vanilla Mini Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread UK Politics Mega-thread YouTube Thread Canadian Politics Mega-thread
Fan Clubs
The HerO Fan Club!
Media & Entertainment
Anime Discussion Thread Movie Discussion! Series you have seen recently... [Req][Books] Good Fantasy/SciFi books [TV/BOOK] *SPOILERS* Game of Thrones Discussion
Sports
2024 - 2026 Football Thread McBoner: A hockey love story Tennis[sport] Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023
World Cup 2022
Tech Support
FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard? Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Major Shifts in the Gaming I…
TrAiDoS
An Exploration of th…
waywardstrategy
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
Customize Sidebar...

Website Feedback

Closed Threads



Active: 8804 users

Computer Programming, compiling a shared library

Blogs > Zortch
Post a Reply
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 15:59 GMT
#1
Hey, so I'm a math student working on a computer program.
I've got to call some C methods from my java code so I'm working on learning some basic JNI(java native interface).

I am working on Fedora.
I'm putting together the very simple HelloWorld program for starters.
I'm following along exactly with the book.
Java code is written fine, C code is written fine.
Now I need to compile HelloWorld.c into libHelloWorld.so but the book only gives commands to do this for Solaris and Win32. I tried the Solaris command but it didn't work.
The command given is:
cc -G -I/java/include -I/java/include/solaris HelloWorld.c -o libHelloWorld.so

The message I get is:
cc: unrecognized option '-G'
HelloWorld.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
HelloWorld.c:8: error: stray ‘\’ in program
HelloWorld.c:8: error: missing terminating " character

If anyone has any idea of the proper command or what I'm doing wrong I'd appreaciate it, Thanks!


*****
Respect is everything. ~ARchon
haduken
Profile Blog Joined April 2003
Australia8267 Posts
May 15 2008 16:05 GMT
#2
type: man cc
and look up for an option that does what you want.

dunno really...
going to sleep now, but just by looking at your problem for a few secs, it appears you are trying to
access something on solaris (a sun OS which has good java support) on fedora, a typical linux machine.

try dig around sun forum and see if they have something that you can install.
Rillanon.au
haduken
Profile Blog Joined April 2003
Australia8267 Posts
May 15 2008 16:22 GMT
#3
google says that JNI has platform dependencies....
have a look at this page
http://depth-first.com/articles/2006/10/16/compiling-c-to-java-bytecode

i'm guessing you have to change the -I/java/include -I/java/include/solaris into whatever java you got on your fedora...
Rillanon.au
zdd
Profile Blog Joined October 2004
1463 Posts
May 15 2008 16:30 GMT
#4
looks like your cc binary wasn't compiled with the proper flags. did you compile it from source or are you using a pre-built package?
All you need in life is a strong will to succeed and unrelenting determination. If you meet these prerequisites, you can become anything you want with absolutely no luck, fortune or natural ability.
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 16:36 GMT
#5
zdd:
Ok well I don't really understand what you just said, but I assume you're talking about my fedora setup? I didn't set up anything on this computer if that is what you are asking.
Sorry for my lack of knowledge heh, I'm not really a comp sci student.

haduken:
Thanks for the advice, I'll look into it ^^
Respect is everything. ~ARchon
zdd
Profile Blog Joined October 2004
1463 Posts
Last Edited: 2008-05-15 16:45:16
May 15 2008 16:44 GMT
#6
On May 16 2008 01:36 Zortch wrote:
zdd:
Ok well I don't really understand what you just said, but I assume you're talking about my fedora setup? I didn't set up anything on this computer if that is what you are asking.
Sorry for my lack of knowledge heh, I'm not really a comp sci student.

haduken:
Thanks for the advice, I'll look into it ^^

generally "unrecognized option" in the output means that the program does not support the function you are trying to make it perform, because someone explicitly specified it at compile time by not setting a "flag" to the compiler that made your "cc" program, or the function has a different parameter than the one you are used to. so the -G is not supported by your cc, and since you are probably using the pre-built fedora cc package, I would recommend rebuilding cc from the source code with the flag for whatever feature "-G" is enabled, or finding out if the feature has to be called with a different parameter other than -G.
All you need in life is a strong will to succeed and unrelenting determination. If you meet these prerequisites, you can become anything you want with absolutely no luck, fortune or natural ability.
CTStalker
Profile Blog Joined November 2004
Canada9720 Posts
May 15 2008 16:46 GMT
#7
some very smart people i've worked with have told me that JNI is one the hardest APIs around to learn, so goodluck. I've only got minimal experience with it, so I'm not any help. sorry
By the way, my name is Funk. I am not of your world
omgbnetsux
Profile Blog Joined April 2004
United States3749 Posts
May 15 2008 16:49 GMT
#8
On May 16 2008 01:46 CTStalker wrote:
some very smart people i've worked with have told me that JNI is one the hardest APIs around to learn, so goodluck. I've only got minimal experience with it, so I'm not any help. sorry

JNI is nasty indeed. I won't even touch it.

Godspeed. Google, google, google.
FreeZEternal
Profile Joined January 2003
Korea (South)3396 Posts
May 15 2008 16:50 GMT
#9
Yeap it's very hard because you make a mistake in your C code and you will get huge native stack trace that will kill your JVM.
Zortch
Profile Blog Joined January 2008
Canada635 Posts
May 15 2008 16:50 GMT
#10
Heh, thanks guys.
The worst part is, JNI isn't even the problem...yet xD
Respect is everything. ~ARchon
borg
Profile Joined September 2005
171 Posts
May 15 2008 20:36 GMT
#11
hi there, lemme try to shed some light on this.

first of all, unix (solaris) isnt linux (fedora). you can easily tell from the man pages for any unix command and their linux counterpart. that's not to say they are completely different, sometimes the differences are very subtle, even undocumented...

that said, ill copy/paste the man pages for solaris 5.9 (which i have) for the cc command
+ Show Spoiler +

SunOS/BSD Compatibility Package Commands cc(1B)

NAME
cc - C compiler

SYNOPSIS
/usr/ucb/cc [options]

DESCRIPTION
/usr/ucb/cc is the interface to the BSD Compatibility Pack-
age C compiler. It is a script that looks for the link
/usr/ccs/bin/ucbcc to the C compiler. The /usr/ccs/bin/ucbcc
link is available only with the SPROcc package, whose
default location is /opt/SUNWspro. The /usr/ucb/cc interface
is identical to /usr/ccs/bin/ucbcc, except that BSD headers
are used and BSD libraries are linked before base
libraries. The /opt/SUNWspro/man/man1/acc.1 man page is
available only with the SPROcc package.

OPTIONS
The /usr/ucb/cc interface accepts the same options as
/usr/ccs/bin/ucbcc, with the following exceptions:

-Idir Search dir for included files whose names do not begin
with a slash (/) prior to searching the usual direc-
tories. The directories for multiple -I options are
searched in the order specified. The preprocessor
first searches for #include files in the directory
containing sourcefile, and then in directories named
with -I options (if any), then /usr/ucbinclude, and
finally, in /usr/include.

-Ldir Add dir to the list of directories searched for
libraries by /usr/ccs/bin/ucbcc. This option is passed
to /usr/ccs/bin/ld and /usr/lib. Directories specified
with this option are searched before /usr/ucblib and
/usr/lib.

-Y P, dir
Change the default directory used for finding
libraries.

EXIT STATUS
The following exit values are returned:

0 Successful compilation or link edit.

>0 An error occurred.

FILES
/usr/ccs/bin/ld
link editor

/usr/lib/libc

SunOS 5.9 Last change: 24 Feb 1998 1

SunOS/BSD Compatibility Package Commands cc(1B)

C library

/usr/ucbinclude
BSD Compatibility directory for header files

/usr/ucblib
BSD Compatibility directory for libraries

/usr/ucblib/libucb
BSD Compatibility C library

/usr/lib/libsocket
library containing socket routines

/usr/lib/libnsl
library containing network functions

/usr/lib/libelf
library containing routines to process ELF object
files

/usr/lib/libaio
library containing asynchronous I/O routines

ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:

____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWscpu |
|_____________________________|_____________________________|

SEE ALSO
ld(1), a.out(4), attributes(5)

NOTES
The -Y P, dir option may have unexpected results and should
not be used.

SunOS 5.9 Last change: 24 Feb 1998 2

>





and here's the man page for cc from my linux OS (ubuntu):
(incidentally, cc is linked to gcc)

+ Show Spoiler +

GCC(1) GNU GCC(1)



NAME
gcc - GNU project C and C++ compiler

SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...

Only the most useful options are listed here; see below for the remain‐
der. g++ accepts mostly the same options as gcc.

DESCRIPTION
When you invoke GCC, it normally does preprocessing, compilation,
assembly and linking. The "overall options" allow you to stop this
process at an intermediate stage. For example, the -c option says not
to run the linker. Then the output consists of object files output by
the assembler.

Other options are passed on to one stage of processing. Some options
control the preprocessor and others the compiler itself. Yet other
options control the assembler and linker; most of these are not docu‐
mented here, since you rarely need to use any of them.

Most of the command line options that you can use with GCC are useful
for C programs; when an option is only useful with another language
(usually C++), the explanation says so explicitly. If the description
for a particular option does not mention a source language, you can use
that option with all supported languages.

The gcc program accepts options and file names as operands. Many
options have multi-letter names; therefore multiple single-letter
options may not be grouped: -dr is very different from -d -r.

You can mix options and other arguments. For the most part, the order
you use doesn’t matter. Order does matter when you use several options
of the same kind; for example, if you specify -L more than once, the
directories are searched in the order specified.

Many options have long names starting with -f or with -W---for example,
-fmove-loop-invariants, -Wformat and so on. Most of these have both
positive and negative forms; the negative form of -ffoo would be
-fno-foo. This manual documents only one of these two forms, whichever
one is not the default.

OPTIONS
Option Summary

Here is a summary of all the options, grouped by type. Explanations
are in the following sections.

Overall Options
-c -S -E -o file -combine -pipe -pass-exit-codes -x language
-v -### --help --target-help --version @file

C Language Options
-ansi -std=standard -fgnu89-inline -aux-info filename -fno-asm
-fno-builtin -fno-builtin-function -fhosted -ffreestanding
-fopenmp -fms-extensions -trigraphs -no-integrated-cpp
-traditional -traditional-cpp -fallow-single-precision
-fcond-mismatch -fsigned-bitfields -fsigned-char -funsigned-bit��‐
fields -funsigned-char

C++ Language Options
-fabi-version=n -fno-access-control -fcheck-new -fconserve-space
-ffriend-injection -fno-elide-constructors -fno-enforce-eh-specs
-ffor-scope -fno-for-scope -fno-gnu-keywords -fno-implicit-tem��‐
plates -fno-implicit-inline-templates -fno-implement-inlines
-fms-extensions -fno-nonansi-builtins -fno-operator-names
-fno-optional-diags -fpermissive -frepo -fno-rtti -fstats
-ftemplate-depth-n -fno-threadsafe-statics -fuse-cxa-atexit
-fno-weak -nostdinc++ -fno-default-inline -fvisibil��‐
ity-inlines-hidden -Wabi -Wctor-dtor-privacy -Wnon-virtual-dtor
-Wreorder -Weffc++ -Wno-deprecated -Wstrict-null-sentinel
-Wno-non-template-friend -Wold-style-cast -Woverloaded-virtual
-Wno-pmf-conversions -Wsign-promo

Objective-C and Objective-C++ Language Options
-fconstant-string-class=class-name -fgnu-runtime -fnext-runtime
-fno-nil-receivers -fobjc-call-cxx-cdtors -fobjc-direct-dispatch
-fobjc-exceptions -fobjc-gc -freplace-objc-classes -fzero-link
-gen-decls -Wassign-intercept -Wno-protocol -Wselector
-Wstrict-selector-match -Wundeclared-selector

Language Independent Options
-fmessage-length=n -fdiagnostics-show-location=[once|every-line]
-fdiagnostics-show-option

Warning Options
-fsyntax-only -pedantic -pedantic-errors -w -Wextra -Wall
-Waddress -Waggregate-return -Wno-attributes -Wc++-compat
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wconver��‐
sion -Wno-deprecated-declarations -Wdisabled-optimization
-Wno-div-by-zero -Wno-endif-labels -Werror -Werror=* -Wer��‐
ror-implicit-function-declaration -Wfatal-errors -Wfloat-equal
-Wformat -Wformat=2 -Wno-format-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-func��‐
....


there's actually like 20 more pages of detailed info, but you can see that already there are huge differences btwn the two commands.

since all you're doing is just a hello world program to learn the basics, the best way would be to get a different book that is gives you examples specifically for the OS you're using, that way you dont have to tackle these problems and can just get on with learning the programming language.

i'm guessing your book is this:
http://java.sun.com/docs/books/jni/html/start.html

and according to the book,
The -G option instructs the C compiler to generate a shared library instead of a regular Solaris executable file.

when i look for the "shared library" keyword in the manpage for my linux OS, i see that there are some flags that probably do the same thing, look for -shared, -shared-libgcc, -static-libgcc

you can do a man on your own cc, and look for this "shared library" keyword and work out the corresponding flag that you need.
borg
Profile Joined September 2005
171 Posts
Last Edited: 2008-05-15 20:46:37
May 15 2008 20:39 GMT
#12
one other solution that might also help you is that if you're deadset in using solaris, you can run it as a virtual environment under fedora or any other OS.

here's the vmware version of it for solaris 10.

http://www.vmware.com/appliances/directory/420

you should know that this requires installing the vmware (player) software on fedora (shouldnt be that hard) first and then running the vmware image for solaris 10.

vmware and the solaris image are both free.
Please log in or register to reply.
Live Events Refresh
Next event in 4h 44m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Nina 203
StarCraft: Brood War
Rain 4110
GuemChi 3376
Mind 180
ZergMaN 64
Bale 21
Icarus 11
Dota 2
NeuroSwarm187
League of Legends
Doublelift4549
JimRising 738
Counter-Strike
C9.Mang0313
Other Games
summit1g7172
Hui .130
Mew2King35
Organizations
Other Games
gamesdonequick34493
StarCraft: Brood War
UltimateBattle 39
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• mYiSmile145
• practicex 21
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• Lourlo1070
• Rush856
• Stunt295
Upcoming Events
Replay Cast
4h 44m
CrankTV Team League
5h 44m
OSC
7h 44m
Big Brain Bouts
10h 44m
Replay Cast
18h 44m
RSL Revival
1d 3h
Serral vs Bunny
ByuN vs GgMaChine
CranKy Ducklings
1d 4h
Afreeca Starleague
1d 4h
Snow vs Jaedong
YSC vs hero
RSL Revival
2 days
Solar vs Rogue
Maru vs NightMare
Sparkling Tuna Cup
2 days
[ Show More ]
GSL
3 days
Replay Cast
3 days
WardiTV Weekly
4 days
The PondCast
5 days
Replay Cast
6 days
CrankTV Team League
6 days
Liquipedia Results

Completed

CSL Season 21: Qualifier 2
HSC XXIX
Eternal Conflict S2 E1

Ongoing

IPSL Spring 2026
Acropolis #4
YSL S3
CSL 2026 Summer (S21)
Escore Tournament S3: W2
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
Heroes Pulsing #3
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026

Upcoming

ASL Season 22: Wild Card Qualifier
CSLAN 4
Blizzard Classic Cup 2026
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
RSL Revival: Season 6
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Eternal Conflict S2 E2
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2026 TLnet. All Rights Reserved.