Hi Jonathan, I am responding inline.
All of these USR_* options should be removed.
This make command shouldn't define USR_LDFLAGS either.
The TIRPC option already does all of this setup, it might only require further options if the library is located somewhere non-standard (not the case for you).
Using USR_LIBS causes the EPICS build system to search for the library as if it were an EPICS module, and that obviously fails; the last thing it tries is to find a static library in your current build, which causes the error message you saw. In such cases,
the correct option is *_SYS_LIBS, because system libraries are treated differently. Either way, you *shouldn't manually specify anything related to libtirpc beyond TIRPC=YES*.
-
-
❌ Still no
libasyn.so
is created.
-
Checked for errors in the build process:
grep -i "error" asyn_build.log
-
No major compilation errors, but
libasyn.so
is still missing.
-
Attempted to force shared library creation by modifying
asynApp/Makefile
:
SHARED_LIBRARIES = YES
STATIC_BUILD = NO
-
Rebuilt again → Still no
libasyn.so
.
-
Manually created a symbolic link to
libtirpc.so
inside asyn/lib/linux-x86_64/
:
cd ~/support/asyn/lib/linux-x86_64
ln -s /usr/lib/x86_64-linux-gnu/libtirpc.so libtirpc.a
Questions
-
Why is asyn
not producing
libasyn.so
at all?
-
Is there a missing dependency or configuration preventing shared library creation?
-
Are there specific asyn
settings that need to be adjusted to force
libasyn.so
compilation?
-
Has anyone successfully built
asyn
with libtirpc
support on a recent Linux distribution (e.g., Ubuntu 22.04, Debian 11)?
-
If so, what specific settings were required?
-
Should I try an older version of
asyn
or epics-base
?
-
My current setup uses EPICS Base 7.0.9 and
asyn-R4-45
.
-
I know that my setup should work, as a member of this community kindly let me know that they ran nearly the exact same setup with positive results.
System Information
-
OS: Ubuntu 24.04
-
EPICS Base Version: 7.0.9
-
asyn Version: R4-45
-
TIRPC Installed: Yes (
/usr/lib/x86_64-linux-gnu/libtirpc.so
exists)
Final Notes
I have been troubleshooting this issue extensively, and I would really appreciate any guidance or suggestions from the community.
If anyone has encountered this issue before and found a working solution, I would love to hear how you resolved it.
Thanks in advance for your help!
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
Hi Mark and Jonathan,
I know that “re2c” package is required by the sequencer. I ‘m not sure if it is needed on Ubuntu or not.
Regards,
Ibrahim
Hi Jonathan,
Last week I successfully built base 7.0.9, asyn, seq, sscan, and Galil on an Ubuntu system with those same specs.
Mark
Hi Mark,
Yes, I did move my support directory to be out of epics-base. It fixed the problem!
Here are my specs:
-
Ubuntu 24.04
-
EPICS 7.0.9
-
GCC 13.3.0
Could these be causing any problems?
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq
&
sscan
Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq
and
sscan
) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan
does not compile. -
sscan
fails because
scanProg.o
is missing, which (I believe) needs
seq
to be installed. -
seq
fails to build due to a missing
lexer.c
, which should be generated from
lexer.l
by
e_flex
. -
e_flex
is broken on my system, preventing
lexer.c
from being created.
Steps I Have Taken So Far
1. Verified e_flex
and
antelope
Exist in EPICS Base
-
Both
e_flex
and
antelope
are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/
. -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l
in
seq
-
lexer.l
is present in
/home/jonathanhai/support/seq/src/snc/
, but running
e_flex
fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex
manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl
(Skeleton File Required
by e_flex
)
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex
and
bison
as an Alternative
· sudo apt install flex bison
-
flex
version:
2.6.4 -
bison
version:
3.8.2
-
Tried running system
flex
manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex
still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL
environment variable?
-
Why is
lexer.l
failing with "premature EOF" when running
flex
?
-
Could
lexer.l
be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex
and manually create
lexer.c
?
-
If I download a pre-generated
lexer.c
, will the build proceed?
-
Would switching to an older version of
seq
help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq
&
sscan
Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq
and
sscan
) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan
does not compile. -
sscan
fails because
scanProg.o
is missing, which (I believe) needs
seq
to be installed. -
seq
fails to build due to a missing
lexer.c
, which should be generated from
lexer.l
by
e_flex
. -
e_flex
is broken on my system, preventing
lexer.c
from being created.
Steps I Have Taken So Far
1. Verified e_flex
and
antelope
Exist in EPICS Base
-
Both
e_flex
and
antelope
are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/
. -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l
in
seq
-
lexer.l
is present in
/home/jonathanhai/support/seq/src/snc/
, but running
e_flex
fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex
manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl
(Skeleton File Required
by e_flex
)
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex
and
bison
as an Alternative
· sudo apt install flex bison
-
flex
version:
2.6.4 -
bison
version:
3.8.2
-
Tried running system
flex
manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex
still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL
environment variable?
-
Why is
lexer.l
failing with "premature EOF" when running
flex
?
-
Could
lexer.l
be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex
and manually create
lexer.c
?
-
If I download a pre-generated
lexer.c
, will the build proceed?
-
Would switching to an older version of
seq
help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
Hi Mark and Jonathan,
I know that “re2c” package is required by the sequencer. I ‘m not sure if it is needed on Ubuntu or not.
Regards,
Ibrahim
Hi Jonathan,
Last week I successfully built base 7.0.9, asyn, seq, sscan, and Galil on an Ubuntu system with those same specs.
Mark
Hi Mark,
Yes, I did move my support directory to be out of epics-base. It fixed the problem!
Here are my specs:
-
Ubuntu 24.04
-
EPICS 7.0.9
-
GCC 13.3.0
Could these be causing any problems?
Jonathan Hai
Researcher/Tech Monkey
CNBL | Department of Physics and Astronomy
McMaster University
Sapere Aude
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq
&
sscan
Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq
and
sscan
) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan
does not compile. -
sscan
fails because
scanProg.o
is missing, which (I believe) needs
seq
to be installed. -
seq
fails to build due to a missing
lexer.c
, which should be generated from
lexer.l
by
e_flex
. -
e_flex
is broken on my system, preventing
lexer.c
from being created.
Steps I Have Taken So Far
1. Verified e_flex
and
antelope
Exist in EPICS Base
-
Both
e_flex
and
antelope
are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/
. -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l
in
seq
-
lexer.l
is present in
/home/jonathanhai/support/seq/src/snc/
, but running
e_flex
fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex
manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl
(Skeleton File Required
by e_flex
)
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex
and
bison
as an Alternative
· sudo apt install flex bison
-
flex
version:
2.6.4 -
bison
version:
3.8.2
-
Tried running system
flex
manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex
still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL
environment variable?
-
Why is
lexer.l
failing with "premature EOF" when running
flex
?
-
Could
lexer.l
be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex
and manually create
lexer.c
?
-
If I download a pre-generated
lexer.c
, will the build proceed?
-
Would switching to an older version of
seq
help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
Hi Jonathon,
What version of EPICS base are you using? Have you modified anything in it?
Last week you reported a problem building asyn. I could not reproduce your problem, and then Andrew Johnson suggested that you move support/ so it was not under EPICS base. Did you do that, and did it fix your problem?
I am not aware of anyone else reporting a problem with lexer, so there must be something different with your installation. Is this Ubuntu 22? I built base successfully on that last week, including seq and sscan with base 7.0.9.
Mark
Subject: Follow-up: Issues Installing Galil EPICS Drivers –
seq
&
sscan
Still Not Building
I appreciate the help so far regarding my Galil motor driver installation issues. I've followed the advice given and have attempted multiple fixes, but I’m still unable to get the required dependencies (seq
and
sscan
) to build.
Recap of the Issue
-
I need to install the Galil motor drivers, but the build fails because
sscan
does not compile. -
sscan
fails because
scanProg.o
is missing, which (I believe) needs
seq
to be installed. -
seq
fails to build due to a missing
lexer.c
, which should be generated from
lexer.l
by
e_flex
. -
e_flex
is broken on my system, preventing
lexer.c
from being created.
Steps I Have Taken So Far
1. Verified e_flex
and
antelope
Exist in EPICS Base
-
Both
e_flex
and
antelope
are present in
/home/jonathanhai/epics-base/bin/linux-x86_64/
. -
Running
antelope --version
works, but running e_flex --help
produces an error:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: unknown flag '-'
2. Checked for lexer.l
in
seq
-
lexer.l
is present in
/home/jonathanhai/support/seq/src/snc/
, but running
e_flex
fails with:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: could not create
-
Running
e_flex
manually gives:
· /home/jonathanhai/epics-base/bin/linux-x86_64/e_flex: can't open skeleton file DEFAULT_SKELETON_FILE
3. Checked for flex.skl
(Skeleton File Required
by e_flex
)
· find ~/epics-base -name "flex.skl"
returns no results, meaning this file is missing.
· /home/jonathanhai/epics-base/configure/os/Linux/flex.skl: No such file or directory
4. Installed System flex
and
bison
as an Alternative
· sudo apt install flex bison
-
flex
version:
2.6.4 -
bison
version:
3.8.2
-
Tried running system
flex
manually:
· cd ~/support/seq/src/snc
· flex -o lexer.c lexer.l
o lexer.l:1: premature EOF
5. Rebuilt EPICS Base
· cd ~/epics-base
· make clean
· make
-
No change,
e_flex
still does not work.
Current Issues & Questions
-
It fails with "unknown flag '-'" when run manually.
-
It also reports "can't open skeleton file DEFAULT_SKELETON_FILE" when used.
-
Should I be specifying a
FLEX_SKEL
environment variable?
-
Why is
lexer.l
failing with "premature EOF" when running
flex
?
-
Could
lexer.l
be corrupted or incomplete? -
If so, can I manually download a working version?
-
Is there a way to bypass
e_flex
and manually create
lexer.c
?
-
If I download a pre-generated
lexer.c
, will the build proceed?
-
Would switching to an older version of
seq
help?
-
If so, which version would you recommend?
I really appreciate any further guidance on this! Thanks again for your time.
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules
When you build epics base, that generates base/bin/…./antelope and e_flex, so basically yacc and (f)lex.
Do you have the base/bin/HOST_ARCH folder on your PATH?
Then it should find those when building the other modules