• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 07:05
CEST 13:05
KST 20:05
  • 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
[ASL21] Ro24 Preview Pt2: News Flash6[ASL21] Ro24 Preview Pt1: New Chaos0Team Liquid Map Contest #22 - Presented by Monster Energy10ByuL: The Forgotten Master of ZvT30Behind the Blue - Team Liquid History Book20
Community News
Weekly Cups (March 16-22): herO doubles, Cure surprises3Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool49Weekly Cups (March 9-15): herO, Clem, ByuN win42026 KungFu Cup Announcement6BGE Stara Zagora 2026 cancelled12
StarCraft 2
General
Team Liquid Map Contest #22 - Presented by Monster Energy What mix of new & old maps do you want in the next ladder pool? (SC2) herO wins SC2 All-Star Invitational Blizzard Classic Cup @ BlizzCon 2026 - $100k prize pool Potential Updates Coming to the SC2 CN Server
Tourneys
RSL Season 4 announced for March-April Sparkling Tuna Cup - Weekly Open Tournament StarCraft Evolution League (SC Evo Biweekly) WardiTV Mondays World University TeamLeague (500$+) | Signups Open
Strategy
Custom Maps
[M] (2) Frigid Storage Publishing has been re-enabled! [Feb 24th 2026]
External Content
Mutation # 519 Inner Power The PondCast: SC2 News & Results Mutation # 518 Radiation Zone Mutation # 517 Distant Threat
Brood War
General
[ASL21] Ro24 Preview Pt2: News Flash Pros React To: SoulKey vs Ample ASL21 General Discussion RepMastered™: replay sharing and analyzer site KK Platform will provide 1 million CNY
Tourneys
[ASL21] Ro24 Group D [Megathread] Daily Proleagues [ASL21] Ro24 Group C [ASL21] Ro24 Group B
Strategy
What's the deal with APM & what's its true value Fighting Spirit mining rates Simple Questions, Simple Answers
Other Games
General Games
General RTS Discussion Thread Nintendo Switch Thread Stormgate/Frost Giant Megathread Darkest Dungeon Path of Exile
Dota 2
The Story of Wings Gaming Official 'what is Dota anymore' discussion
League of Legends
G2 just beat GenG in First stand
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Five o'clock TL Mafia Mafia Game Mode Feedback/Ideas Vanilla Mini Mafia
Community
General
US Politics Mega-thread The Games Industry And ATVI European Politico-economics QA Mega-thread Canadian Politics Mega-thread Russo-Ukrainian War Thread
Fan Clubs
The IdrA Fan Club
Media & Entertainment
[Manga] One Piece [Req][Books] Good Fantasy/SciFi books Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion Cricket [SPORT] Tokyo Olympics 2021 Thread General nutrition recommendations
World Cup 2022
Tech Support
[G] How to Block Livestream Ads
TL Community
The Automated Ban List
Blogs
Funny Nicknames
LUCKY_NOOB
Money Laundering In Video Ga…
TrAiDoS
Iranian anarchists: organize…
XenOsky
FS++
Kraekkling
Shocked by a laser…
Spydermine0240
ASL S21 English Commentary…
namkraft
Customize Sidebar...

Website Feedback

Closed Threads



Active: 13355 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
Wardi Open
11:00
#80
WardiTV147
OGKoka 6
IntoTheiNu 4
Liquipedia
Afreeca Starleague
10:00
Ro24 Group D
Light vs Calm
Royal vs Mind
Afreeca ASL 9755
StarCastTV_EN236
LiquipediaDiscussion
Replay Cast
09:00
SC:Evo Showmatches
CranKy Ducklings95
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Lowko226
SortOf 131
ProTech117
Rex 40
OGKoka 6
StarCraft: Brood War
Horang2 15250
Bisu 7821
EffOrt 2316
BeSt 1544
Sea 1399
actioN 661
Mini 643
Hyuk 491
Zeus 359
Larva 342
[ Show more ]
Killer 277
Hyun 196
JYJ 145
Sharp 138
ToSsGirL 120
Backho 105
Barracks 80
Soulkey 59
Bale 37
Hm[arnc] 34
JulyZerg 32
GoRush 25
Sacsri 24
yabsab 20
scan(afreeca) 14
soO 12
SilentControl 11
[sc1f]eonzerg 9
Terrorterran 6
eros_byul 0
Dota 2
XcaliburYe320
League of Legends
JimRising 338
Counter-Strike
olofmeister2164
allub127
Super Smash Bros
Mew2King48
Other Games
singsing1641
B2W.Neo982
Livibee590
shoxiejesuss439
crisheroes224
Fuzer 200
ArmadaUGS62
Organizations
StarCraft: Brood War
UltimateBattle 285
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 11 non-featured ]
StarCraft 2
• CranKy Ducklings SOOP2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Upcoming Events
Monday Night Weeklies
4h 55m
Replay Cast
12h 55m
Sparkling Tuna Cup
22h 55m
Afreeca Starleague
22h 55m
Rush vs PianO
Flash vs Speed
PiGosaur Cup
1d 12h
Replay Cast
1d 21h
Afreeca Starleague
1d 22h
BeSt vs Leta
Queen vs Jaedong
Replay Cast
2 days
The PondCast
2 days
OSC
3 days
[ Show More ]
RSL Revival
3 days
TriGGeR vs Cure
ByuN vs Rogue
Replay Cast
4 days
RSL Revival
4 days
Maru vs MaxPax
BSL
5 days
RSL Revival
5 days
uThermal 2v2 Circuit
6 days
BSL
6 days
Liquipedia Results

Completed

2026 Changsha Offline CUP
WardiTV Winter 2026
NationLESS Cup

Ongoing

BSL Season 22
CSL Elite League 2026
CSL Season 20: Qualifier 1
ASL Season 21
Acropolis #4 - TS6
StarCraft2 Community Team League 2026 Spring
RSL Revival: Season 4
Nations Cup 2026
BLAST Open Spring 2026
ESL Pro League S23 Finals
ESL Pro League S23 Stage 1&2
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual

Upcoming

CSL Season 20: Qualifier 2
Escore Tournament S2: W1
CSL 2026 SPRING (S20)
Acropolis #4
IPSL Spring 2026
BSL 22 Non-Korean Championship
CSLAN 4
Kung Fu Cup 2026 Grand Finals
HSC XXIX
uThermal 2v2 2026 Main Event
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
IEM Atlanta 2026
Asian Champions League 2026
PGL Astana 2026
BLAST Rivals Spring 2026
CCT Season 3 Global Finals
IEM Rio 2026
PGL Bucharest 2026
Stake Ranked Episode 1
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.